我在网站上
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
,我知道为什么?
答案 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
,现在你的脚本已经坏了。如果可能,请尝试找到更好的引用,例如id
或class
,指向您的预期位置。