针对Scrapy的正确Xpath

针对Scrapy的正确Xpath,xpath,scrapy,Xpath,Scrapy,我是一个足球迷,正在努力学习刮皮。但是,我遇到了一些与xpath相关的问题,我想知道是否有人可以帮忙。我在第页,试图获得2774名球员的所有信息。这听起来像一个完全是新手的问题,但我如何才能刮取球员的名字呢?我试着用 `response.xpath('//*[(@id = "player-table-statistics-body")]//*[contains(concat( " ", @class, " " ), concat( " ", "player-link", " " ))]/text

我是一个足球迷,正在努力学习刮皮。但是,我遇到了一些与xpath相关的问题,我想知道是否有人可以帮忙。我在第页,试图获得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()` 

但是,它把统计席中的所有名字都删掉了,我也不想这样。我真的很感谢你的帮助。谢谢

@史蒂夫:这就是我在刮壳里做的事:

scrapy shell https://www.whoscored.com/Statistics
response.xpath('//*[(@id = "player-table-statistics-body")]//*[contains(@class, "player-link")]/text()').extract()
我想这会给我十个名字,我正在寻找,但它没有。在这一点上,我真是不知所措

xpath
('/*[(@id=“player table statistics body”)]//*[包含(@class,“player link”)]/text())
从“player statistics”表中获取10名玩家

你想用Concat实现什么?

xpath
('/*[(@id=“player table statistics body”)]//*[包含(@class,“player link”)]/text())
从“player statistics”表中获取10名玩家


您试图用concats实现什么?

遵循Xpath将对您有用

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

遵循Xpath将对您有效

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

@对不起,我的错。现在修好了。@alecxe对不起,我的错。现在修好了。史蒂夫,谢谢你的回复。就像我提到的,我只是复制了Chrome中selectorgadget插件提供的包含concat()函数的xpath。我对XPath的了解几乎是零,我正在为初学者弄清楚这一点。但是,我尝试了如下xpath:
response.xpath('/*[(@id=“player table statistics body”)]/*[包含(@class,“player link”)]/text()).extract()
,但这也没有给我带来我所希望的结果。我在这里肯定有什么根本性的错误。我在Firefox中使用Firebug,它非常可靠。另一个方便的调试工具是。将您的代码添加到您的问题中,我们将进行另一次查看。页面的这部分似乎是由javascript动态生成的,这很有意义。你需要用硒之类的东西来提取。史蒂夫,谢谢你的回复。就像我提到的,我只是复制了Chrome中selectorgadget插件提供的包含concat()函数的xpath。我对XPath的了解几乎是零,我正在为初学者弄清楚这一点。但是,我尝试了如下xpath:
response.xpath('/*[(@id=“player table statistics body”)]/*[包含(@class,“player link”)]/text()).extract()
,但这也没有给我带来我所希望的结果。我在这里肯定有什么根本性的错误。我在Firefox中使用Firebug,它非常可靠。另一个方便的调试工具是。将您的代码添加到您的问题中,我们将进行另一次查看。页面的这部分似乎是由javascript动态生成的,这很有意义。你需要用硒之类的东西来提取。乌斯曼,不完全是。你所指的XPath是在页面底部的统计最佳席,它不是动态生成的。我正在寻找“玩家表统计体”,正如@Steve正确指出的,我将不得不使用Selenium.Usman,不完全是。你所指的XPath是在页面底部的统计最佳席,它不是动态生成的。我正在寻找“玩家表统计体”,正如@Steve正确指出的那样,我将不得不使用Selenium。