-1

我想解析一个网页以检索有关它的一些信息(我的确切问题是检索此列表中的所有项目: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>),但由于我无法控制网页,因此无法绕过它。

所以这里有几个问题可以解决我的问题:

  • 如何浏览树?
  • 有没有办法让解析器不那么严格?

谢谢 !

4

1 回答 1

2

尝试使用漂亮的汤,它具有一些出色的功能,并且使 Python 中的解析变得非常容易。

在https://www.crummy.com/software/BeautifulSoup/bs4/doc/查看他们的文档

编辑:

正如@mzjn 指出的那样,我没有在答案中包含代码示例(这就是否决票的原因),因为我认为 OP 必须自己弄清楚。我想我可以帮助他,所以这里是代码

from bs4 import BeautifulSoup
import requests

page = requests.get('http://www.computerhope.com/vdef.htm')
soup = BeautifulSoup(page.text)
tables = soup.findChildren('table')
for i in (tables[0].findAll('a')):
    print(i.text)

它会打印出列表中的所有项目,我希望 OP 会做出相应的调整。

至少现在我希望我的回答会得到支持。

于 2016-07-27T17:50:29.263 回答