猿人学第十三题(含详细解释)

#数据接口其实很容易找到,但请求参数中的cookies中的yuanrenxue_cookie值是动态变化的,因此,找出如何生成这个值是关键。
#尝试全局搜索并逐一排查后并不能找到生成信息,只能尝试用fiddler进行抓包,发现对于页面的请求发生了两次,第一次返回了被script标签包裹的js代码
#原http返回的js代码作用就是赋值cookie并且刷新页面,这就解释了为什么同一个url会被请求两次:第一次获取cookie值,第二次带着cookie获取页面。由于每次作首次请求的时候返回的cookie生成代码都是不一样的,所以需要现拿现用,不能想着去把它扣下来
#所以思路就是模拟两次请求,第一次请求页面获取cookie,第二次请求接口获取数据。
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36',
'referer': 'https://match.yuanrenxue.cn/match/13'
}
import time
import requests
import re
num_list = []
session = requests.session()

cookies = {
'sessionid':'v72ui8lggkfplu82p57g6j39hqkhheuf',
}
session.headers.update(headers)
session.cookies.update(cookies)
#模拟第一次请求
while True:
    try:
        #获取响应
        response = session.get('https://match.yuanrenxue.com/match/13').text
    except:
        print('再试一次')
        pass
    else:
        break
cookies = re.findall("'([a-zA-Z0-9=_|])'", response)#返回cookie的字符串列表
yuanrenxue_cookie = ''.join(cookies)#合并
#获取并设置会话的cookies
key, value = yuanrenxue_cookie.split('=')
cookie = {key: value}
session.cookies.update(cookie)
for i in range(1, 6):
        url = 'https://match.yuanrenxue.com/api/match/13?page={}'.format(i)
        response = session.get(url=url)
        values = response.json()['data']
        for v in values:
            value = v['value']
            num_list.append(value)
print(sum(num_list))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值