Web scraping Scrapy不使用xpath返回结果

Web scraping Scrapy不使用xpath返回结果,web-scraping,scrapy,Web Scraping,Scrapy,我正在尝试在这个url中获取统计信息 我首先尝试使用玩家名称: 进口羊瘙痒 导入请求 从scrapy.item导入项目,字段 从ligafemanager.items导入LigafemanagerItem class Lf1Spider(scrapy.Spider): name = 'lf1' allowed_domains = ['acb.com'] start_urls = ['http://www.acb.com/redaccion.php?id=133495']

我正在尝试在这个url中获取统计信息

我首先尝试使用玩家名称:

进口羊瘙痒 导入请求 从scrapy.item导入项目,字段 从ligafemanager.items导入LigafemanagerItem

class Lf1Spider(scrapy.Spider):
    name = 'lf1'
    allowed_domains = ['acb.com']
    start_urls = ['http://www.acb.com/redaccion.php?id=133495']
    def parse(self, response):
    self.logger.info('A response from %s just arrived!', response.url)
    i = LigafemanagerItem()
    i['acb_player_name'] = response.xpath('//td/div/codigo/table[1]/tbody/tr/td[2]/font/text()').extract()
    self.logger.info('------------ACB NAME is: %s ------', 
    i['acb_player_name'])
    return i

永远不要返回结果,这是一个棘手的问题,因为你看到的不是真实的事实。考虑萤火虫

的HTML

现在查看同一页面的视图源

在read中突出显示的所有标记都是firefox view源窗口中带有错误的标记。还要注意一件关键的事情
t车身
。这是许多网站的情况,HTML中没有使用tbody,但浏览器会自动更正并添加tbody,以便在浏览器中正确显示表格

当您使用脚本时,tbody不在源代码中,并且由于scrapy不会进行任何自动更正,因此使用tbody的XPATH将找不到您感兴趣的元素。那么最简单的解决方案呢?从xpath中删除tbody

In [3]: response.xpath('//td/div/codigo/table[1]/tr/td[2]/font/text()').extract()
Out[3]: ['Nombre']

这是个棘手的问题,因为你看到的不是真实的事实。考虑萤火虫

的HTML

现在查看同一页面的视图源

在read中突出显示的所有标记都是firefox view源窗口中带有错误的标记。还要注意一件关键的事情
t车身
。这是许多网站的情况,HTML中没有使用tbody,但浏览器会自动更正并添加tbody,以便在浏览器中正确显示表格

当您使用脚本时,tbody不在源代码中,并且由于scrapy不会进行任何自动更正,因此使用tbody的XPATH将找不到您感兴趣的元素。那么最简单的解决方案呢?从xpath中删除tbody

In [3]: response.xpath('//td/div/codigo/table[1]/tr/td[2]/font/text()').extract()
Out[3]: ['Nombre']

首先感谢您的帮助,有一个问题,如果我写//td/div/codigo/table/tr/td[2]/font/text())。extract()不返回所有名称,只返回第一个tr?解决方案?应该是“//td/div/codigo//table/tr/td[2]/font/text()”,您需要使用“/”来匹配任何子节点。因此,您不用使用
/table
而是使用
/table
首先感谢您的帮助,如果我写了一个问题//td/div/codigo/table/tr/td[2]/font/text())。extract()不返回所有名称,只返回第一个tr?解决方案?应该是“//td/div/codigo//table/tr/td[2]/font/text()”,您需要使用“/”来匹配任何子节点。因此,您使用的不是
/table
,而是
/table