php爬虫教程(五)提高爬虫抓取效率

原创 2016年08月30日 16:16:58

之前有一次抓取x浪图片库的时候200w图片跑了一整天的时间,

后来采取多进程抓取提高了很高的效率。

多进程的实现可以参考这个方法:

http://blog.csdn.net/u014017080/article/details/46925725

主进程文件--调用子进程 每一个分类对应单独的一个进程 并发抓取

<?php
set_time_limit(0);
$arr = array(
//      7,  //生活百科
//      6,  //经典语录
//      3,  //幽默搞笑
//      25, //创意无限
//      23, //萌宠动物
//      20, //心里测试
//      8,  //时尚潮流
//      68, //内涵漫画
//      4,  //星座物语
//      22, //时尚家居
//      17, //小说故事
//      5,  //美食工厂
 
        24,  //生活百科
        19,  //经典语录
        88,  //幽默搞笑
        57, //创意无限
        1, //萌宠动物
        2, //心里测试
        43,  //时尚潮流
        32, //内涵漫画
        97,  //星座物语
 
        );
foreach($arr as $v){
    //echo '/usr/local/php/bin/php get_wbcontent_ppcc.php '.$v.' > /dev/null 2>&1 &'."\n";
    exec('/usr/local/php/bin/php get_wbcontent_ppcc.php '.$v.' > /dev/null 2>&1 &');
    sleep(1);
}
子进程实现具体的抓取功能
<?php
$client = Load::lib('client');
$client->setTimeout(10);
$client->debug(0);
//这里是本打算挂的代理 后来发现不太稳定就不用了

 //$arr = array(
//      7=>'221.176.14.72::80',  //生活百科
//      6=>'222.39.112.12::8118',  //经典语录
//      3=>'115.182.83.38::8080',  //幽默搞笑
//      25=>'180.97.185.35::10001', //创意无限
//      23=>'119.187.148.35::80', //萌宠动物
//      20=>'111.206.10.13::80', //心里测试
//      8=>'124.65.163.10::8080',  //时尚潮流
//      68=>'122.70.178.226::8118', //内涵漫画
//      4=>'120.199.20.238::8080',  //星座物语
//      22=>'111.206.10.20::80', //时尚家居
//      17=>'183.207.228.11::86', //小说故事
//      5=>'120.203.158.149::8118',  //美食工厂
//      );
//$client->setProxy($arr[$argv[1]]);
//$client->setProxy('106.2.185.130:33311');
$base_url = "http://t.xx.cc/";
for($i=1;$i>0;$i++)
{
    $retry = 4;
    while(--$retry)
    {
        sleep(5);
        $url = 'http://t.xxx.cc/time/index.php?mod=library&action=show&account='.$uid.'&random='.rand(1,1000).'&tid='.$argv[1].'&page='.$i.'&keyword=&do=&offset=20';
        try{
            $c = $client->get($url);
            $r = json_decode($c,'array');
            break;
        }catch(except $e){
            continue;
        }
    }
    if(!empty($r['html']))
    {
        //写入操作
        }
    }else{
         die;
    }
}
 
 

总结:大致就是这个样子,具体的实现大家可以发挥自己的想象力。

我只是给大家提供一个参考而已。

谢谢读到这里。

版权声明:本文为博主原创文章,未经博主允许不得转载。

php通过fork和管道实现多进程

php通过fork和管道实现多进程最近遇到两个问题问题一做php爬虫,使用fork启动多进程通过curl抓取数据,通过log分析发现只有一个进程能够执行,没找到原因 改用管道去启动多进程则无碍。 ` ...

php爬虫教程(一) 简单的页面抓取

最近朋友抓取点数据,写了几个抓取数据的脚本。 主要功能是,分别抓起x了么,美x,x度外卖的餐厅和菜品数据 ,后期我把代码分享出来。 今天就先说说简单的页面抓取 -------------------...

PHP爬虫最全总结1

爬虫是我一直以来跃跃欲试的技术,现在的爬虫框架很多,比较流行的是基于python,nodejs,java,C#,PHP的的框架,其中又以基于python的爬虫流行最为广泛,还有的已经是一套傻瓜式的软件...

网页抓取:PHP实现网页爬虫方式小结

抓取某一个网页中的内容,需要对DOM树进行解析,找到指定节点后,再抓取我们需要的内容,过程有点繁琐。LZ总结了几种常用的、易于实现的网页抓取方式,如果熟悉JQuery选择器,这几种框架会相当简单。 ...

PHP写爬虫

地址:http://www.chinaz.com/web/2015/0930/452838.shtml 代码托管地址:https://github.com/hhqcontinue/zhihu...

PHP实现的一个简单的爬虫

这个小爬虫的功能是抓取目标网页的url,并实现递归爬。这个小demo是参照网友的代码然后自己改了一下,由于网上版本太多,我就不@原来的作者了(我不知道谁才是真正的作者)下面是代码:...

php curl网络爬虫简单实例代码

php curl网络爬虫的实例代码

最好的语言 PHP + 最好的前端测试框架 Selenium = 最好的爬虫(上)

最好的语言 PHP + 最好的前端测试框架 Selenium = 最好的爬虫(上) 入职冰鉴科技做爬虫开发已经半年多了,陆续开发维护了几个爬虫以后终于在 web 端爬虫这一块有了登堂入室的感觉。中间踩...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

php爬虫:知乎用户数据爬取和分析

转载自:http://segmentfault.com/a/1190000004357994 背景说明:小拽利用php的curl写的爬虫,实验性的爬取了知乎5w用户的基本信息;同时,针对爬取...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:php爬虫教程(五)提高爬虫抓取效率
举报原因:
原因补充:

(最多只允许输入30个字)