在进行网络爬虫或数据采集时,经常需要使用代理来避免IP被封或突破访问限制。本文介绍Python requests库设置代理的3种常用方法。
方法一:基础代理设置
最简单的代理设置方式:
import requests
# 设置代理
proxies = {
'http': 'http://proxy_ip:port',
'https': 'https://proxy_ip:port'
}
# 发送请求
response = requests.get('http://httpbin.org/ip', proxies=proxies)
print(response.json())
这种方法适合临时使用单个代理IP。
方法二:带认证的代理设置
如果代理需要用户名和密码认证:
import requests
# 带认证的代理设置
proxies = {
'http': 'http://username:password@proxy_ip:port',
'https': 'https://username:password@proxy_ip:port'
}
response = requests.get('https://httpbin.org/ip', proxies=proxies)
print(response.json())
方法三:Session级别代理设置
对于需要保持会话的场景,建议使用Session:
import requests
session = requests.Session()
# 为整个session设置代理
session.proxies = {
'http': 'http://proxy_ip:port',
'https': 'https://proxy_ip:port'
}
# 后续所有请求都会使用代理
response1 = session.get('http://httpbin.org/ip')
response2 = session.get('http://httpbin.org/headers')
实际应用注意事项
1. 代理池轮换
import random
import requests
proxy_list = [
'http://proxy1:port',
'http://proxy2:port',
'http://proxy3:port'
]
# 随机选择代理
proxy = random.choice(proxy_list)
proxies = {'http': proxy, 'https': proxy}
response = requests.get(url, proxies=proxies)
2. 异常处理
import requests
from requests.exceptions import ProxyError, Timeout
try:
response = requests.get(url, proxies=proxies, timeout=10)
except ProxyError:
print("代理连接失败")
except Timeout:
print("请求超时")
代理服务选择建议
在选择代理服务时,建议考虑以下因素:
- 稳定性:IP存活率和响应速度
- 覆盖范围:支持的地区和运营商
- 价格:是否提供免费试用
- 技术支持:API文档和客服响应
如果你正在寻找稳定的代理服务,可以试试 ipflex.ink,他们提供高质量的住宅代理和数据中心代理,新用户还有免费额度可以测试效果。特别适合需要大量数据采集的项目。
总结
根据不同场景选择合适的代理设置方法:
- 简单测试:使用方法一
- 需要认证:使用方法二
- 批量请求:使用方法三
记住在实际项目中要做好异常处理和代理轮换,确保爬虫的稳定运行。
本文介绍了Python requests设置代理的基础方法,更多高级技巧和最佳实践,欢迎关注我的后续文章。