在爬虫学习中,经常会用到正则表达式去匹配网页源代码中的特定字符串,例如网页链接,标题等相关信息。在处理这类问题上,正则表达式可以说是一大利器。当然在python中还有类似的较为简单的方法处理这类问题,比如beautifulsoup,pyquery,xpath等相应的库,当这些库失灵的时候,兜兜转转回到最原始的正则表达式,你蓦然回首,就会发现数据正乖巧的躺在你的数据库中。

敲黑板,说重点

正则表达式可以用来提取某字符串中的符合要求

的字符,或者将特定的字符进行修改(替换),删除操作。将需要输出的匹配字符串用小

括号括起来,然后可以用group()的方法进行调用。例如:

line = "booooobabadby123"
regex_str = ".*(b.*b).*"
match_obj = re.match(regex_str,line)
if match_obj:
    print(match_obj.group(1)

爬虫中常用的特殊字符

  1. "^ " 这个符号表示字符串的开始位置,相当于是标记字符串的第一个字符,相等就开始后面的匹配,不相等就结束。特别注意,如果在中括号中出现,则表示除此之外的字符,例如 [^h]表示除了h之外的其余字符。
  2. “$” 代表字符串结束符,如果想匹配其本身,则需在前面加“\”
  3. “ . ” 表示匹配任意字符
  4. " * " 表示出现零次或者多次
  5. “ ? ” 表示前面的字符出现零次或者一次,也可以表示非贪婪匹配。
  6. “ + ” 表示最少出现一次
  7. {2} 表示前面的字符出现两次,{2,}表示前面的字符最少出现两次,{2,5}表示前面的字符最少出现两次,最多出现五次。

中括号的妙用

  1. [abcd]代表匹配abcd中的任意字符
  2. [^a]代表匹配除了字符a以外的字符
  3. [A-Za-z0-9]代表匹配所有的字母和数字
  4. [.] 匹配“ . ”,等价于.

其余常用匹配:

  1. \s 代表空格,\S代表除空格以外的字符
  2. \w 代表字母或数字或下划线或汉字 等价于 '[A-Za-z0-9_]
  3. \d代表数字

这些是比较常用的匹配规则,只是庞大正则系统的冰山一角,当然这些应用于日常的爬虫工作已经足够,在实际的应用中需要什么再去继续探索学习吧,毕竟学习永无止境。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐