- 前言
在使用Python进行网络爬取时,对于请求网站的Headers信息处理非常重要。有些情况下我们需要手动填写Headers请求头,这时候我们可以将Headers字符串转换成字典,方便进行添加、修改等操作。
- 将Headers请求头字符串转为字典
在Python中,请求头可以用字符串表示,也可以用字典表示。因此,转换字符串为字典的方法就比较简单了,只需要调用Python内置的json库即可。
具体的代码如下所示:
import json
headers = '''
{
"User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36 Edg/89.0.774.54",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
"Accept-Encoding": "gzip, deflate, br",
"Connection": "keep-alive"
}
'''
headers_dict = json.loads(headers)
其中,headers为Headers字符串,headers_dict为转换后的字典。
- 示例说明
在以下两个示例中,我们将用上述方法将Headers字符串转换成字典,实现一些简单的爬虫功能。
3.1 示例1:爬取搜狗搜索结果
搜狗搜索的地址为:https://www.sogou.com/web?query=xxx
为了避免被反爬虫,我们需要设置Headers,否则会跳转至验证码页面。
在这里,我们可以将Headers字符串转换成字典,添加到requests.get()方法中,实现示例1。
import requests
import json
search_name = "Python"
headers_str = '''
{
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36 Edg/89.0.774.54",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
"Accept-Encoding": "gzip, deflate, br",
"Connection": "keep-alive"
}
'''
# 转换headers
headers = json.loads(headers_str)
url = f"https://www.sogou.com/web?query={search_name}"
response = requests.get(url, headers=headers)
print(response.status_code)
print(response.content.decode('utf-8'))
运行上述代码,便可以得到搜狗搜索的结果页面了,且不会跳转至验证码页面。
3.2 示例2:爬取csdn网站的文章页面
csdn网站的地址为:https://blog.csdn.net/
同样的,我们也需要设置Headers。只不过不同站点的Headers信息可能会不一样,因此我们需要在需要的站点通过抓包等方式获取相应的Headers字符串。
import requests
import json
article_url = "https://blog.csdn.net/XXX/article/details/123456"
headers_str = '''
{
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36 Edg/89.0.774.54",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
"Accept-Encoding": "gzip, deflate, br",
"Connection": "keep-alive"
}
'''
# 转换headers
headers = json.loads(headers_str)
response = requests.get(article_url, headers=headers)
print(response.status_code)
print(response.content.decode('utf-8'))
以上代码中,我们用requests.get()方法获取文章页面信息,并通过headers设置Headers来避免跳转验证码页面。
- 总结
本篇文章对应的示例涉及到了两个网站的爬取。事实上,在进行爬取时,每个网站都有不一样的Headers信息,因此我们需要在对应的网站上抓包,获取相应的Headers字符串。然后使用上述示例中的方法,将Headers字符串转化为字典,方便进行添加、修改等操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python爬虫:将headers请求头字符串转为字典的方法 - Python技术站