在写爬虫的时候,遇到一个小问题,跨html标签(也就是多行)的时候,正则匹配不出来:
举例html:
<div class="nav-logo">
<a href="https://www.douban.com">豆瓣社区</a>
</div>
这个是我写的正则:
reg = u'<a.*?href=(.*?)>.*?</a>.*?</div>'
titleRe = re.compile(reg)
titlelist = re.findall(titleRe,html)
然后匹配出来的都是空,修改以后就匹配成功了:
reg = u'<a.*?href=(.*?)>.*?</a>.*?</div>'
titleRe = re.compile(reg,re.S)
titlelist = re.findall(titleRe,html)
原因:通配符“.”默认是不匹配换行符“\n”的,即默认只匹配一行,加上re.S后就可以匹配换行符了~~