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
Web抓取标记问题-带Lxml的Python 3_Python_Xpath_Web Scraping_Lxml - Fatal编程技术网

Web抓取标记问题-带Lxml的Python 3

Web抓取标记问题-带Lxml的Python 3,python,xpath,web-scraping,lxml,Python,Xpath,Web Scraping,Lxml,我正在使用python和lxml库进行web抓取。而且,我正试图从棒球网站上搜集一些数据。 出于某种原因,我的代码在我之前打印的内容之后打印一个空列表。在这个问题上有任何帮助都会很好 from lxml import html import requests page = requests.get('http://mlb.mlb.com/mlb/standings/exhibition.jsp?ymd=20161002') tree = html.fromstring(page.content

我正在使用python和lxml库进行web抓取。而且,我正试图从棒球网站上搜集一些数据。 出于某种原因,我的代码在我之前打印的内容之后打印一个空列表。在这个问题上有任何帮助都会很好

from lxml import html
import requests

page = requests.get('http://mlb.mlb.com/mlb/standings/exhibition.jsp?ymd=20161002')
tree = html.fromstring(page.content)
#This will create a list of buyers:
##buyers = tree.xpath('//div[@title="buyer-name"]/text()')
#This will create a list of prices
prices = tree.xpath('//td[@class="tg_w"]/text()')

print("Wins: ", prices)
print()
##print("Buyers: ", buyers)

HTML!=XML。一些html5标记可能会干扰XML解析器


尝试将解析器设置为。

我猜您获取的页面不包含表元素td,它们是由javascript/ajax加载的,因此您可以查找mlb.mlb.com的api不完全是,lxml.html实际上是一个html解析器:。此外,使用XML解析器解析格式错误的XML将返回错误而不是空结果。@MathiasMüller这是真的。解析器正在成功解析html5,但一些自关闭标记(如或)将破坏结构。如果您将bs4解析器设置为lxml,然后漂亮地打印结果,您将看到确切的结果。不,自动关闭标记不会破坏结构,即使在XML中也是如此,并且自动关闭或未关闭的元素标记在这里不是问题。对于问题中描述的问题,可能的解释是a元素由Javascript生成,或者b目标元素位于名称空间中。