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参数为证书文件路径,可以确保请求的安全性,防止中间人攻击。


相关推荐
csbysj202016 分钟前
如何使用 XML Schema
开发语言
R6bandito_21 分钟前
STM32中printf的重定向详解
开发语言·经验分享·stm32·单片机·嵌入式硬件·mcu
earthzhang202129 分钟前
【1007】计算(a+b)×c的值
c语言·开发语言·数据结构·算法·青少年编程
杨枝甘露小码36 分钟前
Python学习之基础篇
开发语言·python
我是华为OD~HR~栗栗呀1 小时前
23届考研-Java面经(华为OD)
java·c++·python·华为od·华为·面试
武文斌771 小时前
项目学习总结:LVGL图形参数动态变化、开发板的GDB调试、sqlite3移植、MQTT协议、心跳包
linux·开发语言·网络·arm开发·数据库·嵌入式硬件·学习
爱吃喵的鲤鱼1 小时前
仿mudou——Connection模块(连接管理)
linux·运维·服务器·开发语言·网络·c++
小蕾Java1 小时前
PyCharm 软件使用各种问题 ,解决教程
ide·python·pycharm
Lucky_Turtle1 小时前
【PyCharm】设置注释风格,快速注释
python
爱吃小胖橘2 小时前
Unity网络开发--超文本传输协议Http(1)
开发语言·网络·网络协议·http·c#·游戏引擎