【发布时间】:2016-12-01 20:57:12
【问题描述】:
我想解析一个网页以检索有关它的一些信息(我的确切问题是检索此列表中的所有项目:http://www.computerhope.com/vdef.htm)。
但是,我不知道该怎么做。
互联网上的很多教程都是从这个开始的(简化的):
html5lib.parse(urlopen("http://www.computerhope.com/vdef.htm"))
但在那之后,没有任何教程解释我如何浏览文档并找到我正在寻找的 html 部分。
其他一些教程解释了如何使用 CSSSelector 进行操作,但同样,所有教程都不是以网页开头,而是以字符串开头(例如这里:http://lxml.de/cssselect.html)。
所以我尝试使用以下方法创建带有网页的树:
fromstring(urlopen("http://www.computerhope.com/vdef.htm").read())
但我收到了这个错误:
lxml.etree.XMLSyntaxError: Specification mandate value for attribute itemscope, line 3, column 28。这个错误是因为有一个属性没有指定(例如<input attribute></input>)但是由于我不控制网页,所以我无法绕过它。
所以这里有几个问题可以解决我的问题:
- 如何浏览树?
- 有没有办法让解析器不那么严格?
谢谢!
【问题讨论】:
-
寻找 XPath。它是解析任何类 XML 结构的非常强大的工具。
-
为什么要用etree来解析html?