手把手教你用PHP+代理IP搞数据抓取
最近有个做电商的朋友跟我吐槽,说他们平台总抓不准竞品价格。我一看他代码就发现问题——直接硬怼目标网站,IP早被拉黑了还不自知。这时候就该祭出代理IP这个神器了,今天就拿咱们自家的天启代理当例子,教你怎么玩转PHP爬虫。
环境准备别马虎
先把家伙事儿备齐:PHP7.4+、CURL扩展、DOM解析组件。重点说下代理配置,天启代理的接入特别简单,他们的API接口1秒内必响应,拿到的IP格式长这样:
http://username:password@gateway.tianqidaili.com:端口号
注意三个关键点:
- 协议要选对(HTTP/HTTPS/SOCKS5都行)
- 每次请求最好换新IP(天启支持自动轮换)
- 超时设置别超过3秒(他们的延迟≤10ms)
实战代码拆解
直接上干货,看这段带代理的CURL代码:
$proxy = 'http://user123:pass456@gateway.tianqidaili.com:3000'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, '目标网址'); curl_setopt($ch, CURLOPT_PROXY, $proxy); curl_setopt($ch, CURLOPT_TIMEOUT, 2); // 2秒足够用 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 关键!加这个头更逼真 curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'User-Agent: Mozilla/5.0 (Windows NT 10.0)' ]); $response = curl_exec($ch); if(curl_errno($ch)){ // 天启有状态监控接口,出问题记得调接口查 die('抓取失败: '.curl_error($ch)); } curl_close($ch);
数据解析三板斧
拿到数据后得拆解,推荐两种姿势:
方法 | 适用场景 | 天启配合技巧 |
---|---|---|
正则表达式 | 简单结构数据 | 多城市IP轮询降低封禁风险 |
DOM解析 | 复杂HTML结构 | 用高匿IP避免被识别 |
举个DOM解析的例子:
$dom = new DOMDocument(); @$dom->loadHTML($response); $xpath = new DOMXPath($dom); // 抓价格节点 $prices = $xpath->query("//span[@class='price']");
常见坑点QA
Q:代理IP突然不好使了咋整?
A:先调天启的可用性检查接口,他们IP可用率≥99%,大概率是你目标网站反爬策略升级了,建议切换不同城市节点试试。
Q:明明用了代理为啥还被封?
A:检查是不是用了透明代理,天启的高匿代理会把X-Forwarded-For头处理得干干净净,自建机房的IP更不容易进黑名单。
Q:数据加载不全怎么办?
A:有些网站用JS动态加载,这时候得配合PhantomJS等工具,同时记得给每个请求配独立代理,天启支持每秒10次以上的IP切换。
说点掏心窝的话
搞爬虫就像打游击战,代理IP就是你的隐身衣+冲锋枪。天代理的200+城市节点相当于给你准备了全国各地的伪装身份,自建机房保证IP池子够干净。下次写爬虫别裸奔了,套个靠谱代理,省心又省事。
最后提醒个小细节:用定时任务跑爬虫时,记得把代理验证逻辑写成独立模块,天启的接口返回格式特别规整,处理起来能省不少事。遇到卡壳的地方,他们技术客服响应也挺快,这点亲测好评。