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

本文介绍了如何使用Scrapy爬虫框架配合AJAX请求来抓取动态加载的网页内容,以rubin-kazan.ru的留言本为例,通过分析HTTP请求和响应的JSON数据,提取所需信息,包括消息、作者和日期等。
摘要由CSDN通过智能技术生成

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

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

wDyus.png

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

Adgu9.png

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

CCqK6.png

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

oSQMQ.png

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

L7XCL.png

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

t8Cvi.png

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

CxKDT.png

这是我要找的所有信息。

从现在起,我必须把所有这些知识都学以致用。为此,我们定义蜘蛛:class spider(BaseSpider):

name = 'RubiGuesst'

start_urls = ['http://www.rubin-kazan.ru/guestbook.html']

def parse(self, response):

url_list_gb_messages = re.search(r'url_list_gb_messages="(.*)"', response.body).group(1)

yield FormRequest('http://www.rubin-kazan.ru' + url_list_gb_messages, callback=self.RubiGuessItem,

formdata={'page': str(page + 1), 'uid': ''})

def RubiGuessItem(self, response):

json_file = response.body

在parse函数中,我有第一个请求的响应。

在RubiGuessItem中,我有包含所有信息的JSON文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值