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实现【技巧】