【发布时间】:2011-03-17 14:30:12
【问题描述】:
我正在尝试使用 python HTMLParser 库从 HTML 页面中获取值。我想要获取的值在这个 html 元素中:
...
<div id="remository">20</div>
...
到目前为止,这是我的 HTMLParser 类:
class LinksParser(HTMLParser.HTMLParser):
def __init__(self):
HTMLParser.HTMLParser.__init__(self)
self.seen = {}
def handle_starttag(self, tag, attributes):
if tag != 'div': return
for name, value in attributes:
if name == 'id' and value == 'remository':
#print value
return
def handle_data(self, data):
print data
p = LinksParser()
f = urllib.urlopen("http://domain.com/somepage.html")
html = f.read()
p.feed(html)
p.close()
有人能指出我正确的方向吗?我希望类功能获得值 20。
【问题讨论】:
-
如果你在做大量的 HTML 解析,试试Beautiful Soup。
-
该库是否作为 python 标准库包含在内?我遇到过它,但选择坚持使用 HTMLParser。
-
@zvone 为什么 BeautifulSoup 更适合 html 解析?它仍然是推荐的模块吗?谢谢。
-
@tommy.carstensen BeautifulSoup4 通常被推荐用于网页抓取和解析特定标签的 HTML。它具有定位特定标签的方法,使用 lxml 和 html5lib 库,并为您处理将传入文档转换为 Unicode 并将传出文档转换为 UTF-8。简而言之,它可以在短短几行代码中完成您对丑陋的 HTML 页面所做的一切。查看the bs4 docs! :)
-
@tommy.carstensen 我已经多年没有使用 BeautifulSoup(或解析过的 HTML)了。现在可能有更好的东西。无论如何,它的好处是它在结构糟糕的 HTML 上表现得更好。无效的 HTML 比有效的 HTML 更容易被看到,因此表现良好总是一个加分项。
标签: python html parsing html-parsing