用Scrapy清理AJAX网站

用Scrapy清理AJAX网站,ajax,scrapy,Ajax,Scrapy,从最近两天开始,我一直在寻找我的问题的答案,但现在我很沮丧。我发现了很多关于这方面的东西,但没有任何东西帮助我实现我的目标。这一长段的目的是让您知道,请不要将stackoverflow之前的答案链接起来作为参考。请给我简单明了的解决方案/答案。 我想从中提取球员的数据 但我在向下滚动页面时会遇到ajax。 我的队友要求我不要使用硒。他让我只使用Scrapy来做这个用途。 所以,请用简单的话告诉我是否可以用刮痧如果可能的话,那怎么办呢。 我会感谢你的。这很容易 打开检查元件或Firebug 切换到

从最近两天开始,我一直在寻找我的问题的答案,但现在我很沮丧。我发现了很多关于这方面的东西,但没有任何东西帮助我实现我的目标。这一长段的目的是让您知道,请不要将stackoverflow之前的答案链接起来作为参考。请给我简单明了的解决方案/答案。 我想从中提取球员的数据 但我在向下滚动页面时会遇到ajax。 我的队友要求我不要使用硒。他让我只使用Scrapy来做这个用途。 所以,请用简单的话告诉我是否可以用刮痧如果可能的话,那怎么办呢。 我会感谢你的。

这很容易

打开检查元件或Firebug

切换到网络选项卡,然后单击XHR

然后开始向下滚动页面

您将看到他们正在发送AJAX请求

只需检查他们向哪个URL发送请求,并检查发送的表单数据

headers = {
    'Referer': 'https://www.premierleague.com/players',
    'Origin': 'https://www.premierleague.com',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
    'DNT': '1',
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
}

params = {
    'pageSize': '30',
    'compSeasons': '210',
    'altIds': 'true',
    'page': '0',
    'type': 'player',
    'id': '-1',
    'compSeasonId': '210',
}

yield Request('https://footballapi.pulselive.com/football/players?%s' % (urllib.urlencode(params)), headers=headers)

要继续分页,可以通过
范围()
循环,将
'page'
参数设置为循环中的计数器。