php使用curl代理实现抓取数据的方法
发布:smiling 来源: PHP粉丝网 添加日期:2018-07-26 13:27:35 浏览: 评论:0
- <?php
- define ('IS_PROXY', true );//是否启用代理
- functionasync_get_url($url_array,$wait_usec= 0)
- {
- if(!is_array($url_array))
- returnfalse;
- $wait_usec=intval($wait_usec);
- $data =array();
- $handle=array();
- $running= 0;
- $mh= curl_multi_init();// 开启多线程
- $i= 0;
- foreach($url_arrayas$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($handleas$i=>$ch) {
- $content= curl_multi_getcontent($ch);
- $data[$i] = (curl_errno($ch) == 0) ?$content: false;
- }
- /* 移除 handle*/
- foreach($handleas$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];
- ?>
Tags: 方法 数据
- 上一篇:php观察者模式应用场景实例详解
- 下一篇:php获取客户端IP及URL的方法示例
相关文章
- ·关于php处理textarea回车换行替换方法(js调用出错)(2013-11-29)
- ·php 关闭错误提示方法总结与性能分析(2014-01-03)
- ·PHP 浏览器缓存的各种操作方法(2014-01-15)
- ·php变量使用方法详解(2014-01-16)
- ·PHP类中的静态方法使用实例(2014-02-18)
- ·php输出excel的简单方法(csv格式)(2014-02-21)
- ·PHP的可变变量名使用方法详解(2014-02-22)
- ·php连接mysql错误的配置方法介绍(2014-02-22)
- ·Php入门教程之PHP常量使用方法详解(2014-02-26)
- ·php中运算符使用方法总结(2014-03-06)
- ·php的异常处理基础方法(2014-03-19)
- ·php中计算页面加载时间几种方法总结(2014-03-21)
- ·php提示undefined index解决方法(2014-03-22)
- ·php rand() 随机数生成的方法介绍(2014-03-22)
- ·php中删除字符首尾空格的方法(2014-03-25)
- ·php页面传递参数值几种方法总结(2014-03-26)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)