页面源码中带有换行符,或者想匹配多行内容,
<h3 id="hello">HelloWorld!</h3>
<ul> #要抓取<ul>~</ul>之间的内容,即多行,包含\n
<li> #如何解决?
<p>This is a big world!</p>
</li>
<li>
<p>where are you from?</p>
</li>
</ul>
解决方法:
1.匹配前做处理:在获取页面源码后,用replace过滤掉所有的\n, 这样在匹配目标内容时,不再需要考虑\n.
html = html.replace('\n', '')
target_contents = re.findall(r'r'<h3 id="hello">HelloWorld!</h3><ul>(.*?)</ul>'', html)
2.不处理抓取出来的源码, 在匹配时,注意正则表达式,不使用'.' ,使用[\s\S]:
\s --> 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。
\S --> 匹配任何非空白字符。等价于[^ \f\n\r\t\v]。
target_contents =