成都创新互联网站制作重庆分公司

python中怎么利用正则表达式从网页摘取信息

python中怎么利用正则表达式从网页摘取信息,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

宾川网站建设公司创新互联,宾川网站设计制作,有大型网站制作公司丰富经验。已为宾川上1000+提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的宾川做网站的公司定做!

确认数据源

练习从网页爬取数据时,为了不触发网站的反爬机制,建议打开网页另存为html文件。我从某网站保存了一页关于房产信息的网页,尝试从中爬取信息。

然后用notepad++打开该文件,看看文件内容。

python中怎么利用正则表达式从网页摘取信息

编写正则表达式

是不是感觉有点无从下手?别慌,慢慢来。通过对比网页和网页代码我们确认信息特征。

房产名称

急降60万  急卖全款客户来 宝山二村好位置

复制该信息,到html文件中通过ctrl+F查找该信息,然后认真查看“房产名称”前后的字符特征:

前面的字符特征:

;"  >

后面的字符特征:

 

现在对照房产名称前后的字符特征编写正则表达式,同时给“房产名称”进行分组命名(?P.*?):

;"  >(?P.*?) 

注意: .*?在爬取网页时经常会用到,表示匹配任意内容任意数量直到遇到后面的字符特征结束。

房型

现在再观察下一项“房型”信息前后的字符特征:

前面的字符特征:

span>

后面的字符特征:

如法炮制,提取“房型”信息并进行分组命名(?P.*?):

span>(?P.*?)

注意: 在房产名称和房型之间有大段网页代码,我们可以写.*?对应该段代码表示跳过。

面积

现在再观察下一项“面积”信息前后的字符特征:

前面的字符特征:

<span>

后面的字符特征:

 

如法炮制,提取“面积”信息并进行分组命名(?P.*?):

<span>(?P.*?) 

总价

现在就剩最后一项“总价”信息,继续查找该信息前后的字符特征:

前面的字符特征:

<b>

后面的字符特征:

<

如法炮制,提取“总价”信息并进行分组命名(?P.*?):

<b>(?P.*?)<

现在提取网页数据四项信息的正则表达式均已写好,注意每一项信息之间间隔了很多的网页代码,我们可以用.*?对应该段代码表示跳过。让我们现在把4段信息连起来,写出完整的正则表达式:

rex = ';"  >(?P.*?)&nbsp;.*?span>(?P.*?).*?<span>(?P.*?) <b>(?P.*?)<'

编写代码

import rewith open('房屋信息.html',encoding='utf8') as f:text = f.read()rex = ';"  >(?P.*?)&nbsp;.*?span>(?P.*?).*?<span>(?P.*?) <b>(?P.*?)<'ret = re.finditer(rex, text, re.S)j = 1for i in ret:print(j,i.group('name'), i.group('type'), i.group('area'), i.group('price'))j +=1

输出内容

最终输出内容有120项,信息式样如下:

python中怎么利用正则表达式从网页摘取信息

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。


网页名称:python中怎么利用正则表达式从网页摘取信息
地址分享:http://cxhlcq.com/article/jsogcj.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部