龙空技术网

Python利用requests模块获取数据之请求头设置

鱼毛www 58

前言:

此时你们对“设置请求头”大致比较注重,咱们都需要知道一些“设置请求头”的相关内容。那么小编也在网上网罗了一些关于“设置请求头””的相关资讯,希望你们能喜欢,朋友们一起来学习一下吧!

当我们利用python中的requests模块获取数据的时候,往往不是一帆风顺的,今天,我们继续以获取某些新闻为例子。假设我们现在在百度资讯下随便搜索一下:

然后利用python去获取,编写如下代码:

import requestsurl = ';  # 从浏览器复制过来的res = requests.get(url)print(res.text)

运行上述代码,查看获取到的html文本。

发现仅仅获取到了这么一点,并没有获取到我们希望的数据。

那么发生了什么?为什么会这样?回到浏览器,通过检查,网络,可以查看我们的请求方式。

再看看我们刚才利用代码的请求头,执行

print(res.request.headers)#{'User-Agent': 'python-requests/2.24.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}

可以发现,利用代码的请求头少了很多,最离谱的就是

'User-Agent': 'python-requests/2.24.0'

相比之下,浏览器的是

User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36

那么这个user-agent是啥呢?

User-Agent 首部包含了一个特征字符串,用来让网络协议的对端来识别发起请求的用户代理软件的应用类型、操作系统、软件开发商以及版本号。

简单的来说就像是用来识别我们是通过什么东西访问的,直接编写的代码一览无余,python,无外乎告诉别人,这是一个爬虫,当然获取不到数据了。所以我们需要伪装一下。

import requestsurl = ';headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'}res = requests.get(url,headers=headers)print(res.text)

相比之下,我们加入了一个headers,这是一个字典。将请求头传入requests中,再发起请求,查看结果。发现数据仍然没有增加,我们需要尝试增加请求头的参数。

import requestsurl = ';headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0',                      'Host':';}res = requests.get(url,headers=headers)print(res.text)

这次,我们加入了一个Host参数,再次发起请求,

发现似乎获取到了我们想要的东西,将html文本保存下来查看

with open('test.html','w',encoding='utf-8') as f:    f.write(res.text)

这就与我们直接访问的结果基本一致了。

小结

在进行数据获取的时候,我们需要注意发起请求的请求头,UA伪装是最为常见的一种,但是越来越多的网站光是UA伪装已经解决不了问题,我们可以尝试增加请求头的参数,排除是否是请求头问题导致的不能访问到正确的数据。

标签: #设置请求头 #设置请求头信息的方法 #python添加请求头和请求体 #python 请求头 #python爬虫请求头