Python爬虫实战:Requests模块GET请求参数与请求头处理详解
本文详解Python中Requests模块发起GET请求的两种常见场景:携带查询参数与自定义请求头。通过搜狗首页及搜索接口的实战代码,演示如何利用params字典传递URL参数,以及通过headers参数设置User-Agent以模拟浏览器访问,帮助开发者掌握基础爬虫请求构造技巧。
获取搜狗首页数据基础示例
本节主要探讨如何获取搜狗首页的页面数据,作为学习Requests模块的基础需求。
import requests
# 1.指定url
url = 'https://www.sogou.com/'
# 2.发起get请求:get方法会返回请求成功的响应对象
response = requests.get(url=url)
# 3.获取响应中的数据:text属性作用是可以获取响应对象中字符串形式的页面数据
page_data = response.text
# 4.持久化数据
with open("sougou.html","w",encoding="utf-8") as f:
f.write(page_data)
f.close()
print("ok")
接下来分析Requests模块在处理携带参数的GET请求时的具体机制,以及如何获取并处理返回的响应数据。
需求升级:指定具体的搜索词条,获取搜狗搜索结果对应的页面数据。
在之前的urllib模块中,处理URL中包含中文参数时需要手动进行编码处理,而Requests模块会自动处理URL编码,简化了开发流程。
Requests模块处理GET请求参数
演示如何发起一个带有查询参数的GET请求。
在Requests中,params参数支持传入字典或列表形式的参数,用于构建查询字符串。
def get(url, params=None, **kwargs):
r"""Sends a GET request.
:param url: URL for the new :class:`Request` object.
:param params: (optional) Dictionary, list of tuples or bytes to send
in the body of the :class:`Request`.
:param \*\*kwargs: Optional arguments that ``request`` takes.
:return: :class:`Response <Response>` object
:rtype: requests.Response
import requests
# 指定url
url = 'https://www.sogou.com/web'
# 封装get请求参数
prams = {
'query':'周杰伦',
'ie':'utf-8'
}
response = requests.get(url=url,params=prams)
page_text = response.text
with open("周杰伦.html","w",encoding="utf-8") as f:
f.write(page_text)
f.close()
print("ok")
自定义请求头与完整请求示例
利用Requests模块自定义请求头信息,并在此基础上发起带有参数的GET请求,以模拟特定浏览器环境。
GET方法提供了headers参数,可以将包含请求头信息的字典赋值给该参数,从而在请求中携带自定义头部信息。
import requests
# 指定url
url = 'https://www.sogou.com/web'
# 封装get请求参数
prams = {
'query':'周杰伦',
'ie':'utf-8'
}
# 自定义请求头信息
headers={
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
}
response = requests.get(url=url,params=prams,headers=headers)
page_text = response.text
with open("周杰伦.html","w",encoding="utf-8") as f:
f.write(page_text)
f.close()
print("ok")
以上即为本文的全部内容,希望这些示例能对您的学习有所帮助,也欢迎大家继续支持本站获取更多技术分享。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









