在python中从xpath条目获取文本时遇到问题

时间:2012-02-14 03:42:44

标签: python xpath screen-scraping lxml

我在网站上

http://www.baseball-reference.com/players/event_hr.cgi?id=bondsba01&t=b

并尝试从表中删除数据。当我从一个条目中拉出xpath时,请说投手 “Terry Mulholland,”我找回了这个:

pitchers = site.xpath("/html/body/div[2]/div[2]/div[6]/table/tbody/tr/td[3]/table/tbody/tr[2]/td/a)

当我尝试在打印机中打印投手的pitcher[0].text时,我得[]而不是text,我知道为什么?

1 个答案:

答案 0 :(得分:1)

问题是,原始来源中不存在最后tbody。如果您通过某些浏览器获得该xpath,请记住浏览器可以猜测并添加缺少的元素以使html有效。

删除最后一个tbody可以解决问题。

In : import lxml.html as html

In : site = html.parse("http://www.baseball-reference.com/players/event_hr.cgi?id=bondsba01&t=b")

In : pitchers = site.xpath("/html/body/div[2]/div[2]/div[6]/table/tbody/tr/td[3]/table/tr[2]/td/a")

In : pitchers[0].text
Out: 'Terry Mulholland'

但是我需要补充一点,你使用的xpath表达式非常脆弱。在一个方便的地方添加了一个div,现在你的脚本已经坏了。如果可能,请尝试找到更好的引用,例如idclass,指向您的预期位置。