700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python正则匹配html标签_Python爬虫常用正则表达式及HTML网页标签分析总结

python正则匹配html标签_Python爬虫常用正则表达式及HTML网页标签分析总结

时间:2022-06-20 04:26:18

相关推荐

python正则匹配html标签_Python爬虫常用正则表达式及HTML网页标签分析总结

这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法。它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~

当然如果会Selenium基于自动化测试爬虫、BeautifulSoup分析网页DOM节点,这就更方便了,但本文更多的是介绍基于正则的底层爬取分析。

涉及内容如下:

常用正则表达式爬取网页信息及HTML分析总结

1.获取标签之间内容

2.获取超链接之间内容

3.获取URL最后一个参数命名图片或传递参数

4.爬取网页中所有URL链接

5.爬取网页标题title两种方法

6.定位table位置并爬取属性-属性值

7.过滤等标签

8.获取'm_script=re.findall(html_script,content,re.S|re.M)forscriptinm_script:res_original=r''original':'(.*?)''#原图m_original=re.findall(res_original,script)forpic_urlinm_original:printpic_urlfilename=os.path.basename(pic_url)#去掉目录路径,返回文件名urllib.urlretrieve(pic_url,'E:\\'+filename)#下载图片

运行结果如下图所示,同时下载图片至E盘。

参考文章:

/eastmount/article/details/44492787

9.通过replace过滤

标签

在获取值过程中,通常会存

标签,它表示HTML换行的意思。常用的方法可以通过标签''进行过滤,但是这里我想讲述的是一种Python常用的过滤方法,在处理中文乱码或一些特殊字符时,可以使用函数replace过滤掉这些字符。核心代码如下:

if '

' in value:

value = value.replace('

','') #过滤该标签

value = value.replace('\n',' ') #换行空格替代 否则总换行

例如过滤前后的例子:

達洪阿 異名: (字) 厚菴

(諡) 武壯

(勇號) 阿克達春巴圖魯

達洪阿 異名: (字) 厚菴 (諡) 武壯 (勇號) 阿克達春巴圖魯

10.获取中超链接及过滤标签

在获取值属性值过程中,可能在分析table/tr/th/td标签后,仍然存在图片链接,此时在获取文字内容时,你可能需要过滤掉这些标签。这里采用的方法如下:

value = re.sub(']+>','', value)

例如:

#encoding:utf-8importosimportrevalue='''tableclass='infobox'style='width:21em;text-align:left;'cellpadding='3'>trbgcolor='#CDDBE8'>thcolspan='2'>centerclass='role'>b>中華民國政治人士b>br/>center>th>tr>tr>th>性別:th>td>男td>tr>tr>th>政黨:th>td>spanclass='org'>imgalt='中國國民黨'src='../../../../images/Kuomintang.svg.png'width='19'height='19'border='0'/>ahref='../../../../articles/%8B%E6%B0%91%E9%BB%A8.html'title='中國國民黨'>中國國民黨a>span>td>tr>table>'''value=re.sub('[^>]+>','',value)#过滤HTML标签printvalue

输出如下:

>>>中華民國政治人士性別:男政黨:中國國民黨>>>

虽然仅仅包括汉字,但是中间会存在换行,需要过滤

即可:

if'

'invalue:value=value.replace('

','')value=value.replace('\n','')value=re.sub(']+>','',value)#过滤HTML标签printvalue#输出仅仅一行如下:#中華民國政治人士性別:男政黨:中國國民黨

下面讲述第二部分,通过正则表达式获取中的src超链接,代码如下:

test='''

'''printre.findall('src='(.*?)'',test)

输出如下所示:

>>>['../images/Kuomintang.png']>>>

findall函数返回的总是正则表达式在字符串中所有匹配结果的列表,即findall中返回列表中每个元素包含的信息。

最后希望文章对你有所帮助,后面如果遇到新的相关知识,我也会即使的更新添加的。— END —

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。