scrapy能不能爬ajax,关于scrapy爬虫AJAX页面

问题:

爬取信息页面为:知乎话题广场

当点击加载的时候,用Chrome 开发者工具,可以看到Network中,实际请求的链接为:

a198205130bb600ed0dc5f419dd91dcf.png

FormData为:

1aed6eb6f4f177ab4e30011df3416e75.png

urlencode:

6e17b73c53ef80931ab5888276dc6479.png

然后我的代码为:

...

data = response.css('.zh-general-list::attr(data-init)').extract()

param = json.loads(data[0])

topic_id = param['params']['topic_id']

# hash_id = param['params']['hash_id']

hash_id = ""

for i in range(32):

params = json.dumps({"topic_id": topic_id,"hash_id": hash_id, "offset":i*20})

payload = {"method": "next", "params": params, "_xsrf":_xsrf}

print payload

yield scrapy.Request(

url="https://m.zhihu.com/node/TopicsPlazzaListV2?" + urlencode(payload),

headers=headers,

meta={

"proxy": proxy,

"cookiejar": response.meta["cookiejar"],

},

callback=self.get_topic_url,

)

执行爬虫之后,返回的是:

{'_xsrf': u'161c70f5f7e324b92c2d1a6fd2e80198', 'params': '{"hash_id": "", "offset": 140, "topic_id": 253}', 'method': 'next'}

^C^C^C{'_xsrf': u'161c70f5f7e324b92c2d1a6fd2e80198', 'params': '{"hash_id": "", "offset": 160, "topic_id": 253}', 'method': 'next'}

2016-05-09 11:09:36 [scrapy] DEBUG: Retrying (failed 1 times): []

2016-05-09 11:09:36 [scrapy] DEBUG: Retrying (failed 1 times): []

是不是url哪里错了?请指点一二。

回答:

DEBUG: Retrying

回答:

写爬虫应该一步一步来,不能一步到位,不然哪里错了都不知道,一般是先获取到你要的数据,然后再去解析过滤。

你先发送请求看看能不能获取到你想要的数据,如果没有,可能是url不对或者被拦截了

回答:

#coding=utf-8

import requests

headers = {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}

url = 'https://www.zhihu.com/node/TopicsPlazzaListV2'

data = 'method=next&params=%7B%22topic_id%22%3A833%2C%22offset%22%3A0%2C%22hash_id%22%3A%22%22%7D'

r = requests.post(url, data, headers=headers)

print r.text

回答:

少年教你一个大招。

d0345354bfd7a54b6577a0c6d078e82d.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值