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

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

import requests

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

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

我想对下面这一句通过正则表达式进行提取它的信息,类似于"http://news.163.com/special/rank_m/"这样的网页

使用正则表达式

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。通过这个例子,应该就能说明这个正则表达式中这个“圆括号”的作用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值