在爬虫学习中,经常会用到正则表达式去匹配网页源代码中的特定字符串,例如网页链接,标题等相关信息。在处理这类问题上,正则表达式可以说是一大利器。当然在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)
爬虫中常用的特殊字符
- "^ " 这个符号表示字符串的开始位置,相当于是标记字符串的第一个字符,相等就开始后面的匹配,不相等就结束。特别注意,如果在中括号中出现,则表示除此之外的字符,例如 [^h]表示除了h之外的其余字符。
- “$” 代表字符串结束符,如果想匹配其本身,则需在前面加“\”
- “ . ” 表示匹配任意字符
- " * " 表示出现零次或者多次
- “ ? ” 表示前面的字符出现零次或者一次,也可以表示非贪婪匹配。
- “ + ” 表示最少出现一次
- {2} 表示前面的字符出现两次,{2,}表示前面的字符最少出现两次,{2,5}表示前面的字符最少出现两次,最多出现五次。
中括号的妙用
- [abcd]代表匹配abcd中的任意字符
- [^a]代表匹配除了字符a以外的字符
- [A-Za-z0-9]代表匹配所有的字母和数字
- [.] 匹配“ . ”,等价于.
其余常用匹配:
- \s 代表空格,\S代表除空格以外的字符
- \w 代表字母或数字或下划线或汉字 等价于 '[A-Za-z0-9_]
- \d代表数字
这些是比较常用的匹配规则,只是庞大正则系统的冰山一角,当然这些应用于日常的爬虫工作已经足够,在实际的应用中需要什么再去继续探索学习吧,毕竟学习永无止境。