Python爬虫利器requests:数据传递、代理隧道与证书异常处理!

🔸 数据传递:params参数

在使用requests库时,最常用的参数之一就是params,它用于在GET请求中传递查询参数:

python 复制代码
import requests

# 构建URL
url = 'https://api.example.com/data'

# 定义查询参数
params = {
    'key1': 'value1',
    'key2': 'value2'
}

# 发送GET请求
response = requests.get(url, params=params)

# 打印响应内容
print(response.url)
print(response.json())

🔹 在这个例子中,params参数将查询参数添加到URL中,最终URL变成https://api.example.com/data?key1=value1&key2=value2。这非常适合用于过滤或搜索数据。


🔸 数据传递:data参数

data参数通常用于POST请求,传递表单数据:

python 复制代码
import requests

# 构建URL
url = 'https://api.example.com/login'

# 定义表单数据
data = {
    'username': 'myusername',
    'password': 'mypassword'
}

# 发送POST请求
response = requests.post(url, data=data)

# 打印响应内容
print(response.text)

🔹 使用data参数可以模拟表单提交,将数据以表单格式发送到服务器。这在登录、注册等操作中非常常见。


🔸 数据传递:json参数

json参数用于传递JSON格式的数据,通常用于API请求:

python 复制代码
import requests

# 构建URL
url = 'https://api.example.com/update'

# 定义JSON数据
json_data = {
    'id': 123,
    'status': 'active'
}

# 发送POST请求
response = requests.post(url, json=json_data)

# 打印响应内容
print(response.json())

🔹 json参数会自动将字典转换为JSON格式,并设置Content-Typeapplication/json。这在现代RESTful API中非常常用。


🔸 代理隧道的使用

在网络爬虫中,使用代理隧道可以隐藏真实IP,防止被封禁:

python 复制代码
import requests

# 构建URL
url = 'https://api.example.com/data'

# 定义代理
proxies = {
    'http': 'http://10.10.1.10:3128',
    'https': 'http://10.10.1.10:1080',
}

# 发送GET请求
response = requests.get(url, proxies=proxies)

# 打印响应内容
print(response.text)

🔹 使用proxies参数可以为请求指定代理服务器,有效隐藏真实IP,提高爬虫的稳定性。


🔸 证书异常处理

在进行HTTPS请求时,证书问题是常见的异常之一。我们可以通过设置verify参数来解决:

python 复制代码
import requests

# 构建URL
url = 'https://self-signed.badssl.com/'

try:
    # 发送请求,忽略证书验证
    response = requests.get(url, verify=False)
    print(response.text)
except requests.exceptions.SSLError as e:
    print(f"SSL证书错误: {e}")

🔹 设置verify=False可以忽略证书验证,但这并不安全。在生产环境中,建议使用有效的证书或指定CA证书路径:

python 复制代码
import requests

# 构建URL
url = 'https://api.example.com/data'

# 定义CA证书路径
cert_path = '/path/to/certfile.pem'

# 发送请求,指定CA证书路径
response = requests.get(url, verify=cert_path)
print(response.text)

🔹 通过指定verify参数为证书文件路径,可以确保请求的安全性,防止中间人攻击。


相关推荐
biter down5 小时前
14:pytest-order 插件 顺序控制案例
开发语言·python·pytest
郝学胜-神的一滴5 小时前
Qt 高级开发 009: C++ Lambda 表达式
开发语言·c++·qt·软件构建
测试开发-学习笔记6 小时前
从0开始搭建自动化(一)-appium+python
python·自动化
㳺三才人子6 小时前
初探 Flask
后端·python·flask·html
星栈独行6 小时前
我在 Rust 全栈项目里用 JWT 做无状态认证
开发语言·后端·rust·前端框架·开源·github·web
石山代码6 小时前
C++ 轻量级日志系统
开发语言·c++
AI算法沐枫7 小时前
机器学习到底是什么?
人工智能·python·深度学习·机器学习·数据挖掘·大模型·#ai
小技与小术7 小时前
玩转Flask
开发语言·python·flask
SilentSamsara7 小时前
Python 性能优化:tracemalloc、profiling 与 C 扩展加速
开发语言·python·青少年编程·性能优化
冰小忆7 小时前
大驼峰命名规范和小驼峰命名规范的区别是什么?
开发语言·python