首页 > 后端开发 > php教程 > 关于网络爬虫效率的有关问题

关于网络爬虫效率的有关问题

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-13 10:29:07
原创
855 人浏览过

关于网络爬虫效率的问题
我自己写的一个网络爬虫,提取一个网站中的链接,但是运行起来特别的慢,而且一段时间后会出现网络问题,我的另外一个对链接的处理的程序就没有问题,二者都是串行的,求帮助,谢谢
下面的代码:

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?PHP //网络爬虫include_once('Snoopy.class.php');$spider = new Snoopy();$spider->begin_url="http://blog.csdn.net/";_spider($spider->begin_url);print_r($spider->array_article);function _spider($url){    global $spider;   $file="url.txt";   $fp=fopen($file,"a+");   $array_file=file($file);    $array = get_headers($url,1);   if(preg_match('/200/',$array[0])){//判断网页是否能正常访问    $spider->fetch($url);   //抓取完整的网页    $spider->spider_text=$spider->results;    $spider->fetchlinks($url);  //提取网页中的链接    $array_links=$spider->results;     $array_url=array();  //定义一个放url的数组,如果有重复的则舍弃,不重复的就添加     if(is_array($array_links)){           foreach($array_links as $value){               $is_match=strstr($value,'blog.csdn.net');                  $is_match1=strstr($value,'#');                $is_match2=strstr($value,'@');                       if($is_match!=false&&$is_match1==false&&$is_match2==false){        //如果链接是这个博客站的,导入文本中,否则不进行处理                     $arr=explode(" ",$value);                     $_value=$arr[0];                if(in_array($_value,$array_url)==false){                      $array_url[]=$_value;                     }                }    }  }//print_r($array_url);        foreach($array_url as $value2){            $array2 = get_headers($value2,1);           if(preg_match('/200/',$array2[0])){        $is_match=strstr($value2,'/article/details/');                if($is_match!=false){            if(in_array($value2,$spider->array_article)==false){                static $num=1;                echo $num."...:".$value2."<br>";                $num=$num+1;                $_value2=$value2."\r\n";                        if(in_array($value2,$array_file)==false){                $spider->array_article[]=$value2;            fwrite($fp,$_value2);            }            if(count($spider->array_article)>10000){                break;                        }        }        }                                 else{                              if(in_array($value2,$spider->array_category)==false){                                  $spider->array_category[]=$value2;                                  _spider($value2);                                           }                                           }        }}    }}//echo get_magic_quotes_gpc();    ?>
登录后复制


------解决方案--------------------
这个我推荐用curl...
相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
数组转化array
来自于 1970-01-01 08:00:00
0
0
0
老师,为什么我输出的Array是空的
来自于 1970-01-01 08:00:00
0
0
0
es6 - JavaScript如何将string转array
来自于 1970-01-01 08:00:00
0
0
0
把两个Array合并为一个json的格式
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板