在爬一个网站时碰到了这样一个问题,困扰了我好一会,现在写下来和大家分享。
就是我在pycharm控制台输出一个网页的源代码,然后直接使用控制台的正则表达式功能进行匹配,这个正则表达式是能匹配上的,如图:

黄色部分是自动匹配到的内容,只匹配到了一个子串
但是,当我使用这个表达式匹配网页源代码时,发现匹配到了新的一个子串。
我的匹配语句是这样的:
re.findall('\s\s<li><a id="wzabq2".*title=".*?"', resp.text)#resp代表网页的响应
网页响应的源代码编码没有问题
后来我才发现,只要在正则表达式前面再加一个空白字符就行了,如下:
re.findall('\s\s\s<li><a id="wzabq2".*title=".*?"', resp.text)
结果就能输出正确结果。
但是在控制台使用这个新的正则表达式进行匹配,会发现,又匹配不到了。

这说明pycharm在对网页源代码进行输出时,可能忽略了某些空白字符,所以空白字符的数量可能不对。希望大家在开发时注意一下。
在使用Pycharm进行网页爬取时,作者发现正则表达式在控制台匹配网页源代码与直接匹配存在差异,原因可能是控制台输出时忽略了某些空白字符。通过增加正则表达式中的空白字符数量,问题得到解决,但此修正后的正则在控制台又无法匹配。提醒开发者注意此类问题。

被折叠的 条评论
为什么被折叠?



