
手把手教你用Python爬虫接上代理IP
搞爬虫的兄弟都懂,IP被封这事比吃饭还常见。别慌,今天咱们就唠唠怎么用代理IP给爬虫续命。记住啊,这里说的都是合法合规的数据采集,别动歪心思。
为啥非得用代理IP?
举个栗子,你蹲在网吧打游戏,老板看你玩太嗨直接拔网线。代理IP就像换台机子接着玩,懂了吧?特别是要抓电商价格、比价网站这些地方,没代理IP根本玩不转。
三个重点场景:
- 需要高频访问同个网站
- 目标网站有地域限制
- 采集任务需要多地区数据
代理IP选型指南
| 类型 | 适用场景 | 推荐套餐 |
|---|---|---|
| 动态住宅 | 常规数据采集 | ipipgo标准版7.67元/GB |
| 静态住宅 | 需要固定IP场景 | ipipgo静态版35元/IP |
实战代码示例
用requests库的话,代码长这样:
import requests
从ipipgo后台拿的API地址(记得替换成自己的)
proxy_api = "https://api.ipipgo.com/getproxy"
def get_proxy():
res = requests.get(proxy_api)
return {'http': f'socks5://{res.text}', 'https': f'socks5://{res.text}'}
response = requests.get('目标网址', proxies=get_proxy(), timeout=10)
print(response.status_code)
要是用Scrapy框架,中间件得这么写:
class ProxyMiddleware(object):
def process_request(self, request, spider):
proxy = requests.get("ipipgo的API地址").text
request.meta['proxy'] = f"socks5://{proxy}"
常见坑点QA
Q:代理IP突然失效咋整?
A:用ipipgo的动态住宅套餐,自带IP池自动切换。代码里记得加重试机制,建议用retrying库
Q:怎么知道代理生效了?
A:在请求前后打印当前IP,推荐用httpbin.org/ip这个接口检测
Q:静态和动态到底选哪个?
A:需要登录的网站用静态IP,普通采集用动态。ipipgo的企业版动态套餐支持会话保持,适合需要登录态的场景
避坑指南
1. 别把代理IP存在本地文件,用redis存更靠谱
2. 每次请求前检查IP可用性,别等报错了才处理
3. 注意协议类型,http网站别用socks5代理(虽然ipipgo都支持)
4. 记得设置超时时间,建议5-10秒
最后说下ipipgo的独门绝技,他们家TK专线对某些特殊场景有奇效,遇到难搞的网站可以找客服要测试资源。新用户建议先用动态标准版,用量大了再转企业版,能省不少银子。

