Python 網(wǎng)頁解析HTMLParse的實(shí)例詳解
Python 網(wǎng)頁解析HTMLParse的實(shí)例詳解
使用python將網(wǎng)頁抓取下來之后,下一步我們就應(yīng)該解析網(wǎng)頁,提取我們所需要的內(nèi)容了,在python里提供了一個(gè)簡單的解析模塊HTMLParser類,使用起來也是比較簡單的,解析語法沒有用到XPath類似的簡潔模式,但新手用起來還是比較容易的,看下面的例子:
現(xiàn)在一個(gè)模擬的html文件:
<html> <title id='main' mouse='你好'>我是標(biāo)題</title><body>我是內(nèi)容</body> </html>
需求是,提取出標(biāo)題的屬性值,以及內(nèi)容:
代碼如下:
import html.parser as h
class MyHTMLParser(h.HTMLParser):
a_t=False
def handle_starttag(self, tag, attrs):
#print("開始一個(gè)標(biāo)簽:",tag)
print()
if str(tag).startswith("title"):
print(tag)
self.a_t=True
for attr in attrs:
print(" 屬性值:",attr)
def handle_endtag(self, tag):
if tag == "title":
self.a_t=False
#print("結(jié)束一個(gè)標(biāo)簽:",tag)
def handle_data(self, data):
if self.a_t is True:
print("得到的數(shù)據(jù): ",data)
p=MyHTMLParser()
p.feed("<html> <title id='main' mouse='你好'>我是標(biāo)題</title><body>我是內(nèi)容</body> </html>")
p.close()
運(yùn)行結(jié)果如下:
title
屬性值: ('id', 'main')
屬性值: ('mouse', '你好')
得到的數(shù)據(jù): 我是標(biāo)題
主要的技術(shù)就是繼承了HTMLParser類,然后重寫了里面的一些方法,來完成自己的業(yè)務(wù),從上面的代碼里,發(fā)現(xiàn)如果想獲取某個(gè)標(biāo)簽的內(nèi)容,還是比較麻煩的,當(dāng)然這是python里面最簡單的html解析方式,還有很多其他組件,scrapy等等,里面支持Xpath路徑解析,使用起來非常簡潔清爽。
解析代碼學(xué)會之后,我們就可以將使用urllib包,抓取到的數(shù)據(jù)交給htmlparser解析,從而提取出我們所需要的內(nèi)容。
以上就是Python 網(wǎng)頁解析HTMLParse的實(shí)例詳解,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
關(guān)于文件Permission denied解決方案(pip)
這篇文章主要介紹了文件Permission denied解決方案(pip),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08

