
手把手教你用PHP玩转网页抓取
搞爬虫最怕啥?刚抓两页就被封IP!今天就教你们用CURL+代理IP的黄金组合,保你采集数据稳如老狗。咱就拿ipipgo家的代理服务举例,毕竟他们家的动态代理池是真香。
安装CURL扩展别抓瞎
现在PHP基本都自带CURL了,但保不齐有漏网之鱼。打开php.ini文件找找这行:;extension=curl,把前面分号删了就行。实在搞不定?直接找服务器管理员拍桌子!
// 检查CURL是否可用
if (!function_exists('curl_init')) {
die('赶紧去装CURL扩展吧!');
}
基础采集四步走
记住这个万能模板:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "目标网址");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
注意坑点:记得加超时设置!不然卡死你没商量:
curl_setopt($ch, CURLOPT_TIMEOUT, 15); // 15秒不响应就闪人
代理IP的正确打开方式
直接上ipipgo的配置示例:
curl_setopt($ch, CURLOPT_PROXY, 'gateway.ipipgo.com:9021');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, '账号:密码');
他们家代理池有三大优势:
| 自动切换IP | 每次请求换新IP |
| 成功率保障 | 99%可用率实测 |
| 多协议支持 | HTTP/HTTPS/Socks5通吃 |
采集异常处理三板斧
1. 遇到403就换IP,用ipipgo的自动轮询功能
2. 数据乱码记得转码:mb_convert_encoding($data, 'UTF-8')
3. 定期清理cookie:curl_setopt($ch, CURLOPT_COOKIESESSION, true)
实战经验大放送
最近帮客户抓电商价格数据,单IP撑不过10分钟。换成ipipgo的代理池后,连续采集8小时不带喘气的。他们的API还能实时查看用量,这点确实省心。
常见问题QA
Q:代理突然失效咋整?
A:用ipipgo的备用节点功能,配置两个代理地址自动切换
Q:采集速度变慢怎么办?
A:检查是不是开了延迟设置,建议用并发采集+代理IP组合拳
Q:怎么判断代理是否生效?
A:在代码里加个调试:curl_getinfo($ch, CURLINFO_PRIMARY_IP)看返回的IP
最后给个忠告:别用免费代理!上次试了某家的免费IP,10个里有8个是坏的,还不如直接买ipipgo的包月套餐划算,新用户首月还打7折呢。

