关于python正则表达式中匹配分组的问题

在爬取网页信息时,我们不妨会用到Python正则表达式。之前一直没有太明白关于正则表达式匹配分组的问题,今天终于搞清楚了,所以特意写一下让自己印象深刻。

myPage = requests.get(url).content.decode("gbk")

通过requests我们在网页得到了这样的html代码

我想对下面这一句通过正则表达式进行提取它的信息

使用正则表达式

mypage_Info = re.findall(r'<div class="titleBar" id=".*?"><h2>.*?</h2><div class="more"><a href="(.*?)">.*?</a></div></div>', myPage, re.S)

请注意上式的括号!

此时只有一个括号,最后我们只得到了一个匹配分组

可以看到得到了一个元素仅仅为网址的list,这是因为刚刚括号括到的地方只有网址,代表我们只有一个匹配分组。

这时我们将代码改写为

mypage_Info = re.findall(r'<div class="titleBar" id=".*?"><h2>(.*?)</h2><div class="more"><a href="(.*?)">.*?</a></div></div>', myPage, re.S)

仔细看的话会发现我在<h2>后面加上了括号,我在“移动”这样的文字出现的地方,建立了一个分组。

得到的结果是

可以看到现在我们得到的list,内部的元素已经变为了一个tuple。通过这个例子,应该就能说明这个正则表达式中这个“括号”的作用了。

猜你喜欢

转载自blog.csdn.net/yyhhlancelot/article/details/83351496