地址:

match.yuanrenxue.com/ma

目录:

1、环境

2、分析请求

3、实现爬取

1、环境

Python3.7、pyexecjs、requests

2、分析请求

图2-1

第一步找到数据接口如图2-1,同时我们可以看到有三个一样的请求,初步判断可能是cooike反爬(当然题目也告诉我们了),我们也可以请求的时候请求头先不带cookie,验证一下很快就可以知道是cookie反爬了。那第一个请求就应该是向服务器获取一个cookie。这里用Charles抓包,因为Chrome无法显示返回的情况,如图2-2。

图2-2
图2-3

可以看到返回的是一段由script标签包裹的字符串,复制到开发者工具的Console看看是什么效果,把script标签和如图2-4的最后一段字符串删掉。

图2-4
图2-5

效果如图2-5,也就是将()中的字符相加而已,直接正则就好了。

3、实现爬取

import re
import requests


cookie = {
    'Cookie': '放入你的sessionID'
}
headers = {
    "User-Agent": "yuanrenxue.project",
}

url = 'http://match.yuanrenxue.com/match/13'
session = requests.Session()
response = session.get(url=url, headers=cookie)
com = re.compile("('(?P<cookie>.?)')")
ret = com.finditer(response.text)
cookie = ''
for i in ret:
    cookie += i.group('cookie')
key, value = cookie.split('=')
session.cookies.set(key, value)

sum_list = []
for page in range(1, 6):
    api_url = f'http://match.yuanrenxue.com/api/match/13?page={page}'
    ret = session.get(api_url, headers=headers)
    for i in ret.json()['data']:
        sum_list.append(i['value'])
print(sum(sum_list))

这里要讲一下如果你要登陆填答案的话需要把你的sessionID填入,在第一次请求就要把sessionID加入中cookie,这样才可以拿到正确的数据。