Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中从xpath条目获取文本时遇到问题_Python_Xpath_Screen Scraping_Lxml - Fatal编程技术网

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

在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。如果您通过某些浏览

我在网站上

并试图从表格中提取数据。当我从一个条目中提取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
。如果您通过某些浏览器获得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