
Yelp评论抓取为什么总被封?
搞过数据抓取的朋友都知道,Yelp的反爬虫机制特别难缠。上周有个开奶茶店的老哥找我吐槽,说他用Python写了个脚本抓竞品店铺的评分,结果刚跑半小时IP就被封了。这问题说白了就是高频访问触发了风控,好比你在超市试吃区来回拿十几次小蛋糕,店员不拦你才怪。
代理IP的实战价值
这时候就需要用代理IP来分散请求压力。原理就像开连锁店——每个分店派不同店员去试吃,每家店每天只去一次。具体到技术实现要注意三个核心点:
| 参数 | 推荐配置 | 错误示范 |
|---|---|---|
| 请求间隔 | 30-120秒随机 | 固定1秒 |
| IP切换频率 | 每5次请求换IP | 全程单IP |
| 请求头设置 | 随机生成User-Agent | 使用默认头 |
手把手配置代理系统
这里用Python演示基础配置,重点看代理设置部分。注意要选择支持住宅代理的服务商,市面上的机房IP早就被Yelp标记了:
import requests
from random import choice
从ipipgo获取的代理池
proxies = [
"203.34.56.78:8800",
"198.23.189.102:3128",
"45.76.203.91:8080"
]
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
def scrape_yelp(url):
try:
response = requests.get(
url,
proxies={"http": choice(proxies)},
headers=headers,
timeout=15
)
return response.text
except Exception as e:
print(f"请求异常: {str(e)}")
避坑指南(真实案例)
去年有个客户用免费代理抓数据,结果出现三种翻车情况:
- IP重复率超过60%
- 响应时间波动从0.5秒到15秒不等
- 20%的代理根本连不上
后来换成ipipgo的动态住宅代理,成功率直接拉到92%。他们的IP池每天更新20%以上的地址,特别适合需要长期跑数据的场景。
常见问题QA
Q:为什么用了代理还是被封?
A:检查三点:1.是否设置了随机延迟 2.User-Agent是否随机 3.单个IP是否使用超过10次
Q:代理IP响应慢怎么办?
A:建议开启ipipgo的智能路由功能,能自动选择延迟最低的节点。实测比手动选节点快3倍以上。
Q:需要多少IP量才够用?
A:按每天抓取1万条数据计算,建议准备500+动态IP。ipipgo的套餐刚好有个899元/月的方案,包含600个高质量住宅IP,性价比很顶。
升级版解决方案
对于企业级用户,推荐使用分布式爬虫架构。把爬虫节点部署在不同地区的服务器,每个节点配置独立的ipipgo代理账号。这样不仅提升采集速度,还能实现地域化数据采集(比如专门获取纽约地区的商户数据)。
最近帮某连锁餐厅做的方案中,他们用10台服务器+ipipgo的企业版代理,三个月抓了270万条评论。关键是不用自己维护IP池,省了至少两个程序员的人力成本。

