代码示例
import urllib.request # _*_coding : utf-8 _*_
import random # 引入随机模块
url = 'https://www.baidu.com/s?wd=ip'
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36'
}
# 代理池:假设你已经有一个包含多个代理的池
proxy_pool = [
'http://49.67.109.216:15600',
'http://49.67.109.217:15600',
'http://49.67.109.218:15600',
# 更多代理...
]
# 从代理池中随机选择一个代理
proxy = random.choice(proxy_pool)
# 设置代理
proxies = {
'http': proxy,
'https': proxy,
}
# 请求对象的定制
request = urllib.request.Request(url=url, headers=headers)
# 设置代理处理器
handler = urllib.request.ProxyHandler(proxies)
opener = urllib.request.build_opener(handler)
# 发送请求并获取响应
try:
response = opener.open(request)
content = response.read().decode('utf-8')
# 保存数据到本地
with open('handler.html', 'w', encoding='utf-8') as f:
f.write(content)
print("数据已成功保存到 handler.html")
except Exception as e:
print(f"请求失败: {e}")
代码规范
-
代理池的构建:你可以使用一个代理池(Proxy Pool),从中随机选择一个代理来发送请求。可以通过从一个代理提供者获取代理(例如,公开的代理池服务或自己搭建的代理池)并存储它们。
-
选择代理:每次发送请求时,从代理池中随机选择一个代理。
-
集成代理池:使用
random模块从代理池中随机选择一个代理,并动态设置代理。