使用HTMLParser解析html

2022-05-03 02:15:08 字數 1183 閱讀 6604

前幾天遇到乙個問題,需要把網頁中的一部分內容挑出來,於是找到了urllib和htmlparser兩個庫.urllib可以將網頁爬下來,然後交由htmlparser解析,初次使用這個庫,在查官方文件時也遇到了一些問題,在這裡寫下來與大家分享.

from htmlparser import htmlparser

class myhtmlparser(htmlparser):

def handle_starttag(self, tag, attrs):

print "a start tag:",tag,self.getpos()

parser=myhtmlparser()

parser.feed('"hello"

')

這個例子裡htmlparser是基類,過載了他的handle_starttag方法,輸出了一些資訊.parser是myhtmlparser的例項,呼叫feed方法開始解析函式.值得注意的是,不需要顯示呼叫handle_starttag方法就會執行.

htmlparser方法的呼叫方式困惑了我很長時間,看了很多博文才恍然大悟,htmlparser含有的方法分為兩類,一類是需要顯式呼叫的,而另一類不需顯示呼叫.

下面的這些函式在解析的過程中會觸發,但是預設情況下不會產生任何***,因而我們要根據自己的需求過載.

當然還有其他函式,這裡不做介紹

所有的內容寫完了,最後還有一點注意事項,htmlparser只是乙個簡單的模組,解析html的功能並不完善,例如不能準確的分別開標籤和"自閉標籤",看下面**:

from htmlparser import htmlparser

class myhtmlparser(htmlparser):

def handle_starttag(self,tag,attrs):

print 'begin tag',tag

def handle_startendtag(self,tag,attrs):

print 'begin end tag',tag

str1='

'str2='

'parser=myhtmlparser()

parser.feed(str1) # 輸出 "begin tag br"

parser.feed(str2) # 輸出 "begin end br"

使用HtmlParser解析HTML

如果要對html進行解析,提取html的資料或者修改html資料,htmlparser是乙個不錯的選擇.使用htmlparser可以解析本地和網路上的html資料 parser parser new parser new winista.text.htmlparser.http.httpprotoc...

使用HtmlParser解析HTML

如果要對html進行解析,提取html的資料或者修改html資料,htmlparser是乙個不錯的選擇.使用htmlparser可以解析本地和網路上的html資料 parser parser new parser new winista.text.htmlparser.lex.lexer new w...

HtmlParser進行解析原理

htmlparser主要靠node abstractnode和tag來表達html 1.node是形成樹結構表示html的基礎,所有的資料表示都是介面node的實現,node定義了與頁面樹結構所表達的頁面page物件,定義了獲取父 子 兄弟節點的方法,定義了節點到對應html文字的方法,定義了該節點...