在python中从xpath条目获取文本时遇到问题
我在网站上 并试图从表格中提取数据。当我从一个条目中提取xpath时,比如说pitcher “Terry Mulholland,”我检索到:在python中从xpath条目获取文本时遇到问题,python,xpath,screen-scraping,lxml,Python,Xpath,Screen Scraping,Lxml,我在网站上 并试图从表格中提取数据。当我从一个条目中提取xpath时,比如说pitcher “Terry Mulholland,”我检索到: pitchers = site.xpath("/html/body/div[2]/div[2]/div[6]/table/tbody/tr/td[3]/table/tbody/tr[2]/td/a) 当我试图在打印机中打印投手[0]的text时,我得到的是[]而不是text,知道为什么吗?问题是,原始源代码中不存在最后一个tbody。如果您通过某些浏览
pitchers = site.xpath("/html/body/div[2]/div[2]/div[6]/table/tbody/tr/td[3]/table/tbody/tr[2]/td/a)
当我试图在打印机中打印投手[0]的
text
时,我得到的是[]
而不是text
,知道为什么吗?问题是,原始源代码中不存在最后一个tbody
。如果您通过某些浏览器获得xpath,请记住,浏览器可以猜测并添加缺少的元素以使html有效
卸下最后一个t车身
可解决此问题
In:将lxml.html导入为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”)
中:投手[0]。文本
“特里·穆霍兰德”
但我需要补充一点,您使用的xpath表达式非常脆弱。在方便的地方添加了一个
div
,现在您的脚本已损坏。如果可能的话,试着找到更好的引用,比如id
或class
,它们指向您期望的位置。html不是xml。使用BeautifulSoup解析html.FUD。lxml适合解析HTML,xpath适合HTML dom导航。非常感谢,这非常有帮助。你怎么知道尸体不在原始来源?看看DOM?@user1082471:这是一种根据经验做出的有根据的猜测。然后我从DOM确认了它。虽然我很惊讶地看到源代码中的第一个tbody
)。您通常不会在大多数源代码中看到tbody
。