html.parser python_python模块之HTMLParser
HTMLParser是python用來解析html的模塊。它可以分析出html里面的標簽、數(shù)據(jù)等等,是一種處理html的簡便途徑。 HTMLParser采用的是一種事件驅(qū)動的模式,當(dāng)HTMLParser找到一個特定的標記時,它會去調(diào)用一個用戶定義的函數(shù),以此來通知程序處理。它 主要的用戶回調(diào)函數(shù)的命名都是以handler_開頭的,都是HTMLParser的成員函數(shù)。當(dāng)我們使用時,就從HTMLParser派生出新的類,然 后重新定義這幾個以handler_開頭的函數(shù)即可。這幾個函數(shù)包括:
handle_startendtag? 處理開始標簽和結(jié)束標簽
handle_starttag???? 處理開始標簽,比如
handle_endtag?????? 處理結(jié)束標簽,比如
handle_charref????? 處理特殊字符串,就是以開頭的,一般是內(nèi)碼表示的字符
handle_entityref??? 處理一些特殊字符,以&開頭的,比如 ?
handle_data???????? 處理數(shù)據(jù),就是data中間的那些數(shù)據(jù)
handle_comment????? 處理注釋
handle_decl???????? 處理
handle_pi?????????? 處理形如<?instruction>的東西
這里我以從網(wǎng)頁中獲取到url為例,介紹一下。要想獲取到url,肯定是要分析標簽,然后取到它的href屬性的值。下面是代碼:
1 #-*- encoding: gb2312 -*-
2 importHTMLParser3
4 classMyParser(HTMLParser.HTMLParser):5 def __init__(self):6 HTMLParser.HTMLParser.__init__(self)7
8 defhandle_starttag(self, tag, attrs):9 #這里重新定義了處理開始標簽的函數(shù)
10 if tag == 'a':11 #判斷標簽的屬性
12 for name,value inattrs:13 if name == 'href':14 printvalue15
16
17 if __name__ == '__main__':18 a = '
test鏈接到163'19
20 my =MyParser()21
22 #傳入要分析的數(shù)據(jù),���html的。
23 my.feed(a)
如果是python3的,導(dǎo)入為 form html.request import HTMLParser ,具體可以參考http://docs.python.org/library/htmlparser.html
執(zhí)行結(jié)果
http://www.163.com
總結(jié)
以上是生活随笔為你收集整理的html.parser python_python模块之HTMLParser的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos未能加载虚拟光盘 C:\Pr
- 下一篇: 硬件:如何选购适合自己的显示器