scrapy可以用来从使用AJAX的网站上抓取动态内容吗?

我最近一直在学习Python,正在着手构建一个web刮板。一点也不花哨;它的唯一目的是从博彩网站获取数据,并将这些数据输入Excel

大多数问题都是可以解决的,我现在有点乱。然而,我在一个问题上遇到了巨大的障碍。如果一个站点加载了一个马匹表并列出了当前的博彩价格,那么这个信息不在任何源文件中。线索是,这些数据有时是实时的,数字显然是从某个远程服务器更新的。我电脑上的HTML只是有一个漏洞,他们的服务器正在推送我需要的所有有趣的数据

现在我对动态web内容的体验很低,所以我很难理解这件事

我认为Java或Javascript是一个关键,这经常出现

铲运机只是一个赔率比较引擎。有些网站有API,但我需要这些为那些没有。我在Python2.7中使用scrapy库

如果这个问题太开放,我很抱歉。简而言之,我的问题是:如何使用scrapy来刮取这些动态数据以便我可以使用它?这样我就可以实时获取下注赔率数据了

下面是一个带有AJAX请求的scrapy的简单示例。让我们看看rubin-kazan.ru网站

所有消息都加载了一个AJAX请求。我的目标是获取这些消息及其所有属性(作者、日期等):

当我分析网页的源代码时,我看不到所有这些消息,因为网页使用了AJAX技术。但我可以使用Mozilla Firefox中的Firebug(或其他浏览器中的等效工具)来分析生成网页上消息的HTTP请求:

它不会重新加载整个页面,而只加载页面中包含消息的部分。为此,我单击底部任意数量的页面:

我观察到负责消息体的HTTP请求:

完成后,我分析请求的标题(我必须引用我将从var部分的源页面提取的URL,请参见下面的代码):

以及请求的表单数据内容(HTTP方法为“Post”):

以及响应的内容,它是一个JSON文件:

它提供了我想要的所有信息

从现在起,我必须用scrapy实现所有这些知识。为此,让我们定义spider:

类spider(BaseSpider):
名称=’RubiGuesst’
起始URL=[‘http://www.rubin-kazan.ru/guestbook.html’]
def解析(自我,响应):
url\u list\u gb\u messages=re.search(r’url\u list\u gb\u messages=“(.*)”,response.body)。组(1)
屈服形式请求(’http://www.rubin-kazan.ru“+url\u列表\u gb\u消息,callback=self.RubiGuessItem,
formdata={‘page’:str(第+1页),’uid’:”’})
def RubiGuessItem(自我,响应):
json_file=response.body

parse函数中,我有对第一个请求的响应。
RubiGuessItem中,我有一个包含所有信息的JSON文件

发表评论