记一次python爬虫requests.post报错405,参数params、data、json用法

710 阅读2分钟

爬虫

网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。
原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。

为什么我们要使用爬虫

互联网大数据时代,给予我们的是生活的便利以及海量数据爆炸式的出现在网络中。
过去,我们通过书籍、报纸、电视、广播或许信息,这些信息数量有限,且是经过一定的筛选,信息相对而言比较有效,但是缺点则是信息面太过于狭窄了。不对称的信息传导,以致于我们视野受限,无法了解到更多的信息和知识。
互联网大数据时代,我们突然间,信息获取自由了,我们得到了海量的信息,但是大多数都是无效的垃圾信息。
例如新浪微博,一天产生数亿条的状态更新,而在百度搜索引擎中,随意搜一条——减肥100,000,000条信息。
在如此海量的信息碎片中,我们如何获取对自己有用的信息呢?
答案是筛选!
通过某项技术将相关的内容收集起来,在分析删选才能得到我们真正需要的信息。
这个信息收集分析整合的工作,可应用的范畴非常的广泛,无论是生活服务、出行旅行、金融投资、各类制造业的产品市场需求等等……都能够借助这个技术获取更精准有效的信息加以利用。
网络爬虫技术,虽说有个诡异的名字,让能第一反应是那种软软的蠕动的生物,但它却是一个可以在虚拟世界里,无往不前的利器

请求头

headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36', 'Cookie': Cookie, 'Referer': '132.xxx.xx.xx:xxxx/xxxx.html?t… round(time.time() * 1000)), 'X-Requested-With': 'XMLHttpRequest', }

提交审批

def postApply(post_data): res = requests.post( url=ADDR_ADD_URL, headers=headers, data=post_data, timeout=3, allow_redirects=True ) return res.status_code

分析错误原因为请求头限制'Accept': 'application/json, text/javascript, /; q=0.01',即请求正文只能说json形式,这里却使用了data参数!那么params、data、json三个参数有什么区别呢:

params:会被加到url上去,成为url的一部分,是用来发送查询字符串的,我们是看得到的 data:它是用来发送正文的,表示使用application/from-urlencode方式提交请求,接收方body的值会是x=1&y=2这种 json:它也是用来发送正文的,表示使用application/json方式提交请求,接收方body值为json