python 正则html 解析,python爬虫--解析网页几种方法之正则表达式(示例代码)

本文介绍了Python中re模块的使用,包括re.match()、re.search()和re.findall()函数。re.match()用于检查字符串起始位置是否匹配模式,re.search()则在整个字符串中搜索匹配项。示例中展示了如何提取字符串中的特定信息以及如何忽略大小写进行匹配。re.findall()方法用于找到所有匹配的结果并以列表形式返回。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、正则表达式

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

re 模块使 Python 语言拥有全部的正则表达式功能。

re.match函数

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

1f9e83b062ed5dfa1e785bb0c89b2265.png

importreprint(re.match(‘www‘, ‘www.runoob.com‘).span()) #在起始位置匹配

print(re.match(‘com‘, ‘www.runoob.com‘)) #不在起始位置匹配

结果:

(0, 3)

None

importre

line= "Cats are smarter than dogs"matchObj= re.match( r‘(.*) are (.*?) .*‘, line)ifmatchObj:print ("matchObj.group() :", matchObj.group())print ("matchObj.group(1) :", matchObj.group(1))print ("matchObj.group(2) :", matchObj.group(2))else:print ("No match!!")

结果:

matchObj.group() : Cats are smarter than dogs

matchObj.group(1) : Cats

matchObj.group(2) : smarter

r‘(.*) are (.*?) .*‘,r的意思为raw string,纯粹的字符串,group(0),是匹配正则表达式整体结果,group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分。

re.search方法

re.search 扫描整个字符串并返回第一个成功的匹配。

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

importre

line= "Cats are smarter than dogs";

matchObj= re.match( r‘dogs‘, line, re.M|re.I)ifmatchObj:print ("match --> matchObj.group() :", matchObj.group())else:print ("No match!!")

matchObj= re.search( r‘dogs‘, line, re.M|re.I)ifmatchObj:print ("search --> matchObj.group() :", matchObj.group())else:print ("No match!!")

结果:

No match!!

search--> matchObj.group() : dogs

re.findall方法

findall能够找到所匹配的结果,并且以列表的形式返回。

importrequestsimportre

link= "http://www.sohu.com/"headers= {‘User-Agent‘ : ‘Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6‘}

r= requests.get(link, headers=headers)

html=r.text

title_list= re.findall(‘href=".*?".(.*?)‘,html)print (title_list)

[‘新闻‘, ‘财经‘, ‘体育‘, ‘房产‘, ‘娱乐‘, ‘汽车‘, ‘时尚‘, ‘科技‘, ‘美食‘, ‘星座‘, ‘邮箱‘, ‘地图‘, ‘千帆‘, ‘畅游‘]

抓取搜狐的主标题。

7b861df044ed52e4acc31e9e64eb9831.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值