Web抓取标记问题-带Lxml的Python 3
我正在使用python和lxml库进行web抓取。而且,我正试图从棒球网站上搜集一些数据。 出于某种原因,我的代码在我之前打印的内容之后打印一个空列表。在这个问题上有任何帮助都会很好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
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目标元素位于名称空间中。