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;
    }
}
 
 

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

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

谢谢读到这里。

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

相关文章推荐

java爬虫抓取图片

  • 2017-09-27 15:05
  • 277KB
  • 下载

python网络爬虫抓取图片

  • 2015-02-05 10:42
  • 493B
  • 下载

php爬虫抓取信息及反爬虫相关

php爬虫首推Curl函数了,先来认识下它。 0x01.curl扩展的安装: 1.确保php子文件夹ext里面有php_curl.dll(一般都有的,一般配置时候会设置环境变量的) 2.将php...

使用爬虫抓取网站异步加载数据

什么是异步加载? 向网站进行一次请求,一次只传部分数据。如:有些网页不需要点击下一页,其内容也可以源源不断地加载。 如何发现异步加载? 1、打开浏览器,右键选择“检查” 2、点击“Network...
  • duxu24
  • duxu24
  • 2016-07-15 13:48
  • 5565

python 爬虫抓取奥数题

__author__ = 'bloodchilde' import urllib import urllib2 import re import os import sys reload(...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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