打开开发者工具找到数据请求,challenge6 就是我们要找的数据请求,查看Header信息是个POST请求,在查看Prevew是返回的数据信息
再次用 postman 模拟请求,可以看到直接返回数据,好的那就没问题,直接撸代码
# -*- encoding=utf-8 -*-
import requests
import os
import requests
headers = {
'Proxy-Connection': 'keep-alive',
'Pragma': 'no-cache',
'Cache-Control': 'no-cache',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Origin': 'http://www.python-spider.com',
'Referer': 'http://www.python-spider.com/challenge/6',
'Accept-Language': 'zh-CN,zh;q=0.9',
}
Count = 0
for i in range(1,101):
data = {
'page': i
}
response = requests.post('http://www.python-spider.com/api/challenge6', headers=headers, data=data, verify=False)
for data in response.json()['data']:
# print(int(data['value']))
Count += int(data['value'])
print(Count)
# 结果 4774618240
答案一提交,哦豁,错误 ???
把 过程的 reponse的headers 打印查看一下,可以看到有 Set-Cookie,每次可能请求后会修改 cookie,下一次请求携带使用,如果cookie错误可能返回脏数据
这里 用到session 会话,会把reponse的 Set-Cookie 携带给下一次请求使用
# -*- encoding=utf-8 -*-
import requests
import os
import requests
headers = {
'Proxy-Connection': 'keep-alive',
'Pragma': 'no-cache',
'Cache-Control': 'no-cache',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Origin': 'http://www.python-spider.com',
'Referer': 'http://www.python-spider.com/challenge/6',
'Accept-Language': 'zh-CN,zh;q=0.9',
}
Count = 0
session = requests.session()
for i in range(1,101):
data = {
'page': i
}
response = session.post('http://www.python-spider.com/api/challenge6', headers=headers, data=data, verify=False)
for data in response.json()['data']:
# print(int(data['value']))
Count += int(data['value'])
print(Count)
# 结果 5101310
发现 答案是不是不一样,这样会把脏数据排除掉。提交答案是成功的!!!
下面 补充一些 cookie和session的知识:
1. Cookie的工作原理
2. Session的工作原理
三、区别对比:
总结 :
这题只要是区别session和cookie,不过在没有答案监测的同时是不知道 有没有脏数据的,这个需要自己在爬虫过程中注意和检查数据了,最后把脏数据排除在外。