python基础之爬虫模块requests模块介绍相关2

115 阅读2分钟

继续探索 Python 的 requests 模块,我们可以了解其更多高级特性和用法:

Session 对象

requests 的 Session 对象允许你跨请求保持某些参数。它也会在同一个 Session 实例发出的所有请求之间保持 cookie,非常适合用于需要维护会话状态的场景,如登录后操作。

import requests

# 创建一个 Session 实例
with requests.Session() as session:
    session.post('https://httpbin.org/post', data={'key': 'value'})

    # 后续请求将会使用相同的会话
    response = session.get('https://httpbin.org/cookies')
    print(response.text)  # 显示 cookie 信息

自定义 Headers

使用 requests 时,你可以自定义 HTTP 头部信息,这对于模拟浏览器请求或设置特定的头部信息非常重要。

import requests

url = 'https://api.github.com/some/endpoint'
headers = {'user-agent': 'my-app/0.0.1'}

response = requests.get(url, headers=headers)

处理重定向

requests 会自动处理服务器的重定向响应,如 301 和 302。但你可以通过 allow_redirects 参数控制这一行为。

import requests

response = requests.get('http://github.com', allow_redirects=False)
print(response.status_code)  # 例如:301

代理支持

requests 允许你通过代理发送请求。这在测试本地网络或绕过网络限制时非常有用。

import requests

proxies = {
  'http': 'http://10.10.1.10:3128',
  'https': 'http://10.10.1.10:1080',
}

response = requests.get('https://www.example.com', proxies=proxies)

超时控制

为了防止网络请求无限期地挂起,你可以为 requests 的请求设置超时时间。

import requests

try:
    response = requests.get('https://github.com', timeout=5)
except requests.Timeout:
    print('The request timed out')
else:
    print('The request did not time out')

文件上传

requests 支持多种形式的文件上传,这使得上传文件变得简单。

import requests

files = {'file': open('report.xls', 'rb')}
response = requests.post('https://httpbin.org/post', files=files)

处理 Cookies

你可以很容易地获取服务器返回的 Cookies,并在后续请求中发送它们。

import requests

response = requests.get('https://www.example.com')
cookies = response.cookies
print(cookies)

# 发送 cookies 到服务器
response = requests.get('https://www.example.com', cookies=cookies)

SSL 证书验证

默认情况下,requests 会验证 HTTPS 请求的 SSL 证书。你可以通过 verify 参数控制这一行为。

import requests

# 禁用 SSL 证书验证
response = requests.get('https://kennethreitz.org', verify=False)

通过利用 requests 的这些高级功能,你可以处理复杂的 HTTP 请求场景,使其成为处理网络请求的强大工具。不过,请记住,禁用 SSL 证书验证或忽略重定向可能会引入安全风险或其他问题。