【发布时间】:2016-04-24 06:57:05
【问题描述】:
我目前正在开发一个没有任何框架的 webscraper,并且遇到了一个问题,即我测试 xpath xpression 以获取维基百科页面上的表格数据。但是,当我抓取它并将其打印到控制台时,它只返回一个空列表。有人可以请教吗?也许建议一些关于 xpath 的有用书籍进行网络抓取? (我有 safaribooks 有帮助)
import requests
from lxml import html
page = requests.get('https://en.wikipedia.org/wiki/L.A.P.D._(band)')
tree = html.fromstring(page.content)
# OK
bandName = tree.xpath('//*[@id="firstHeading"]/text()')
overview = tree.xpath('//*[@id="mw-content-text"]/p[1]//text()')
print(bandName)
print(overview)
#Trouble Code
yearsActive = tree.xpath('//*[@id="mw-content-text"]/table[1]/tbody/tr[6]//text()')
print(yearsActive)
members = tree.xpath('//*[@id="mw-content-text"]/table[1]/tbody/tr[11]/td[1]/ul/li/a//text()')
print(members)
更新: 在进行更多测试时,我发现 print(len(members)) 返回零,这似乎表明我的 xpath 表达式有问题,但是在 chrome 控制台中测试我的成员表达式时,它返回一个列表乐队成员。
【问题讨论】:
-
您处理 HTML 而不是页面的实际数据是否有原因?
-
我不确定如何“处理实际数据”。我对使用 xpath 和一般抓取非常陌生。您能否解释一下我如何处理实际数据?
-
yearsActive 和 members 只是空的。你的意思是所有变量都是空的@user502301
-
@user502301 不,只有活跃年数和成员空着回来。其他两个变量正在起作用。我已经更新了我的代码提交,以便更好地从有效的代码中对无效的代码进行排序。
-
@Ignacio-Vazquez-Abrams 我不确定如何“处理实际数据”。我对使用 xpath 和一般抓取非常陌生。您能否解释一下我如何处理实际数据?
标签: python-2.7 xpath web-scraping