纠正Scrapy的Xpath

时间:2016-06-06 15:37:52

标签: xpath scrapy

我是一名足球迷,正在努力学习scrapy。但是,我遇到了一些与xpath相关的问题,并且想知道是否有人可以提供帮助。我在https://whoscored.com/Statistics页面上,试图获取2774名玩家的所有信息。这可能听起来像一个全新的问题,但我如何刮掉球员的名字?我尝试使用

`response.xpath('//*[(@id = "player-table-statistics-body")]//*[contains(concat( " ", @class, " " ), concat( " ", "player-link", " " ))]/text()').extract()` 

但它并没有刮掉任何东西。我在Chrome中使用了selectorgadget获得了xpath。但是,

`response.xpath('//*[contains(concat( " ", @class, " " ), 
concat( " ", "player-link", " " ))]/text()').extract()` 

可以工作,但它也会删除我不想要的统计XI列表中的所有名称。非常感谢这里的一些帮助。谢谢!

@Steve这就是我在scrapy shell中所做的事情:

scrapy shell https://www.whoscored.com/Statistics
response.xpath('//*[(@id = "player-table-statistics-body")]//*[contains(@class, "player-link")]/text()').extract()

我认为这会给我十个我正在寻找的名字,但它并没有。在这一点上我真的很无能为力!

2 个答案:

答案 0 :(得分:0)

xpath ('//*[(@id = "player-table-statistics-body")]//*[contains(@class, "player-link")]/text()')从“玩家统计”表中获得10名玩家。

你想用concats实现什么目标?

答案 1 :(得分:0)

关注Xpath将为您效劳。

player_list = respose.xpath('//*[@id="overall-formation-seasonal-content"]//li//a[contains(@class,"player-link")]/text()')