爬虫Ajax手动请求失败,Python爬虫--拦截ajax请求获取参数

前言

在学了py的静态爬虫之后,总是感觉有点缺什么,仔细一想,静态的网页会了,但是有的网站人家用的是ajax搞的,这可怎么办啊!于是乎,就想搞点动态爬虫玩玩。

开搞

1.安装requests和json

2.伪装浏览器

url = 'https://book.qidian.com/ajax/book/category?_csrfToken=BXnzDKmnJamNAgLu4O3GknYVL2YuNX5EE86tTBAm&bookId=3144877'

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',

'Referer': 'https://book.qidian.com/info/3144877',

'Cookie': '_csrfToken=BXnzDKmnJamNAgLu4O3GknYVL2YuNX5EE86tTBAm; newstatisticUUID=1564467217_1193332262; qdrs=0%7C3%7C0%7C0%7C1; showSectionCommentGuide=1; qdgd=1; lrbc=1013637116%7C436231358%7C0%2C1003541158%7C309402995%7C0; rcr=1013637116%2C1003541158; bc=1003541158%2C1013637116; e1=%7B%22pid%22%3A%22qd_P_limitfree%22%2C%22eid%22%3A%22qd_E01%22%2C%22l1%22%3A4%7D; e2=%7B%22pid%22%3A%22qd_P_free%22%2C%22eid%22%3A%22qd_A18%22%2C%22l1%22%3A3%7D'

}

3.使用requests发送请求 ,并转码

res = requests.get(url=url, params=headers)

s = str(res.content, "utf-8")

4.使用json进行str到json的转换

load = json.loads(s)

55482546febe

打印结果

5.逐层解析

for (k, v) in load.items(): # 类型为dict

if k == "data":

for (i, j) in v.items(): # 类型为dict

if i == "vs":

for p in j: # 类型为list

for (a, b) in p.items(): # 类型为dict

if a == "vId" or a == "cCnt" or a == "vN": # py自带的判断

print(a, b)

if a == "cs":

for q in b:

print(q)

55482546febe

打印结果

6.这些只是用于解析非vip的书,VIP的咱还不会啊

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值