php使用curl代理实现抓取数据的方法
发布时间 - 2026-01-10 22:49:33 点击率:次本文实例讲述了php使用curl代理实现抓取数据的方法。分享给大家供大家参考,具体如下:
<?php
define ( 'IS_PROXY', true ); //是否启用代理
function async_get_url($url_array, $wait_usec = 0)
{
if (!is_array($url_array))
return false;
$wait_usec = intval($wait_usec);
$data = array();
$handle = array();
$running = 0;
$mh = curl_multi_init(); // 开启多线程
$i = 0;
foreach($url_array as $url) {
$ch = curl_init();
if (IS_PROXY) {
//以下代码设置代理服务器
//代理服务器地址http://www.cnproxy.com/proxy1.html !!Hong Kong, China的速度比较好
curl_setopt ($ch, CURLOPT_PROXY,'110.4.12.170:80' );
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return don't print
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置超时时间
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 302 redirect
curl_setopt($ch, CURLOPT_MAXREDIRS, 7); //HTTp定向级别
curl_multi_add_handle($mh, $ch); // 把 curl resource 放进 multi curl handler 里
$handle[$i++] = $ch;
}
/* 执行 */
do {
$mrc = curl_multi_exec($mh, $running);
if ($wait_usec > 0) /* 每个 connect 要间隔多久 */
usleep($wait_usec); // 250000 = 0.25 sec
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($running && $mrc == CURLM_OK) {
if (curl_multi_select($mh) != -1) {
do {
$mrc = curl_multi_exec($mh, $running);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
/* 读取资料 */
foreach($handle as $i => $ch) {
$content = curl_multi_getcontent($ch);
$data[$i] = (curl_errno($ch) == 0) ? $content : false;
}
/* 移除 handle*/
foreach($handle as $ch) {
curl_multi_remove_handle($mh, $ch);
}
curl_multi_close($mh);
return $data;
}
$urls = array('http://map.baidu.com');
$re = async_get_url($urls);
echo $re[0];
?>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php curl用法总结》、《PHP数组(Array)操作技巧大全》、《php排序算法总结》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数学运算技巧总结》、《php正则表达式用法总结》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
# php
# curl
# 代理
# 抓取数据
# PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
# Fiddler如何抓取手机APP数据包
# fiddler抓包小技巧之自动保存抓包数据的实现方法分析【可根据需求过滤】
# Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
# 抓包工具Fiddler的使用方法详解(Fiddler中文教程)
# Fiddler实现手机抓包之小白入门必看
# 利用Fiddler对手机进行抓包的实现方法
# PHP的cURL库功能简介 抓取网页、POST数据及其他
# PHP中4种常用的抓取网络数据方法
# PHP的CURL方法curl_setopt()函数案例介绍(抓取网页
# POST数据)
# PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
# 代理服务器
# 程序设计
# 操作技巧
# 相关内容
# 遍历
# 感兴趣
# 数据结构
# 给大家
# 比较好
# 更多关于
# 所述
# 多线程
# 移除
# 运算符
# 多久
# 讲述了
# 正则表达式
# ch
# url
# http
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
如何在企业微信快速生成手机电脑官网?
高防服务器:AI智能防御DDoS攻击与数据安全保障
Laravel如何使用Blade模板引擎?(完整语法和示例)
如何在Windows环境下新建FTP站点并设置权限?
三星网站视频制作教程下载,三星w23网页如何全屏?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
,在苏州找工作,上哪个网站比较好?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
EditPlus中的正则表达式 实战(4)
Laravel如何配置和使用缓存?(Redis代码示例)
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
详解Huffman编码算法之Java实现
JavaScript模板引擎Template.js使用详解
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
Laravel怎么连接多个数据库_Laravel多数据库连接配置
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
如何注册花生壳免费域名并搭建个人网站?
Laravel怎么实现验证码(Captcha)功能
Laravel中的Facade(门面)到底是什么原理
焦点电影公司作品,电影焦点结局是什么?
html如何与html链接_实现多个HTML页面互相链接【互相】
如何在阿里云虚拟主机上快速搭建个人网站?
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
Laravel如何保护应用免受CSRF攻击?(原理和示例)
利用 Google AI 进行 YouTube 视频 SEO 描述优化
Python图片处理进阶教程_Pillow滤镜与图像增强
*服务器网站为何频现安全漏洞?
Java遍历集合的三种方式
制作企业网站建设方案,怎样建设一个公司网站?
Android GridView 滑动条设置一直显示状态(推荐)
深圳网站制作的公司有哪些,dido官方网站?
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
Laravel如何与Pusher实现实时通信?(WebSocket示例)
网站页面设计需要考虑到这些问题
新三国志曹操传主线渭水交兵攻略
深入理解Android中的xmlns:tools属性
如何在腾讯云免费申请建站?
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明
如何在服务器上三步完成建站并提升流量?
如何在万网主机上快速搭建网站?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
js代码实现下拉菜单【推荐】
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
什么是javascript作用域_全局和局部作用域有什么区别?
nodejs redis 发布订阅机制封装实现方法及实例代码
详解Android图表 MPAndroidChart折线图
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】

