0
某處在一個HTML文件,我有一個內部的標籤的div
這樣的:如何用HTMLParser讀取內部標籤?
<div class="mydiv">
<h3><a href="#">TEXT</a></h3>
</div>
如何找到使用的HTMLParser類在Python中a
元素中的文本?我想用HTMLParser來做,而不是BeautifulSoup。
某處在一個HTML文件,我有一個內部的標籤的div
這樣的:如何用HTMLParser讀取內部標籤?
<div class="mydiv">
<h3><a href="#">TEXT</a></h3>
</div>
如何找到使用的HTMLParser類在Python中a
元素中的文本?我想用HTMLParser來做,而不是BeautifulSoup。
這應該工作:
"""innerlink.py - print text of e.g. `<div><h3><a>This</a></h3></div>`."""
from html.parser import HTMLParser
class InnerLinkParser(HTMLParser):
"""A parser for HTML with links in h3s in divs."""
def __init__(self):
HTMLParser.__init__(self)
self.stack = []
def handle_starttag(self, tag, attrs):
self.stack.append(tag)
def handle_endtag(self, tag):
while self.stack:
item = self.stack.pop()
if item == tag:
break
else:
raise ValueError("unmatched closing %r tag." % tag)
def handle_data(self, data):
if self.stack[-3:] == ["div", "h3", "a"]:
print(data)
def parse(html):
"""Feed the parser with some HTML."""
parser = InnerLinkParser()
parser.feed(html)
用法:
>>> from innerlink import parse
>>> with open("fragment.html") as f:
... parse(f.read())
...
TEXT
的handle_endtag()
方法寫應付隱含地關閉標籤的可能性;你可能會也可能不需要這個。