html.parser — Python 中的簡單 HTML 和 XHTML 解析器


本模組中定義的 HTMLParser 類提供瞭解析 HTML 和 XHMTL 文件的功能。此類包含可以識別標籤、資料、註釋和其他 HTML 元素的處理程式方法。

我們必須定義一個繼承 HTMLParser 類的新的類,並使用 feed() 方法提交 HTML 文字。

from html.parser import HTMLParser
class parser(HTMLParser):
pass
p = parser()
p.feed('<a href = "www.tutorialspoint.com"></a>')

我們必須覆蓋其以下方法

handle_starttag(tag, attrs):

HTML 標籤通常成對出現,即開始標籤和結束標籤。例如 <head> 和 </head>。此方法用於處理標籤的開始。

轉換為小寫的標籤名稱。attrs 引數代表在標籤的 <> 括號內找到的屬性。

例如,對於標籤 <a href = "www.tutorialspoint.com"></a>,被饋送到解析器物件。

from html.parser import HTMLParser
class parser(HTMLParser):
def handle_starttag(self, tag, attrs):
print("Start tag:", tag)
for attr in attrs:
print(" attr:", attr)
p = parser()
p.feed('<a href = "www.tutorialspoint.com">')

輸出

Start tag: a
attr: ('href', 'www.tutorialspoint.com')
handle_endtag(tag):

此方法用於處理元素的結束標籤。

def handle_endtag(self, tag):
print ("end tag",tag)
handle_data(data):

此方法用於處理標籤之間任意資料。例如

def handle_data(self, data):
print (data)
p = parser()
html = '''
<html>
   <body>
      <h1>Tutorialspoint</h1>
      <b>Python standard library</b>
      <p>HTML module</p>
   </body>
</html>'''
p.feed(html)

輸出

Start tag: h1
Tutorialspoint
end tag h1
Start tag: b
Python standard library
end tag b
Start tag: p
HTML module
end tag p

HTMLParser 類中的其他方法如下

get_starttag_text()

返回最近開啟的開始標籤的文字。

getpos()

返回當前行號和偏移量。

handle_startendtag(tag, attrs)

類似於 handle_starttag(),但在解析器遇到 XHTML 樣式的空標籤 (<img ... />) 時呼叫。

handle_comment(data)

當遇到註釋時呼叫此方法(例如 <!--comment-->)。

更新於: 2019-07-30

2K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.