我想解析一个网页,以便检索有关它的一些信息(我的确切问题是检索此列表中的所有项目: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>
),但由于我无法控制网页,因此我无法解决此问题。
所以这里有几个问题可以解决我的问题:
谢谢!
答案 0 :(得分: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会做出相应的调整。
至少现在我希望我的回答能够得到提升。