PHP原生简单爬虫代码

早就知道PHP可以做爬虫,但是一直没做过,旁边的py小哥天天爬的不易乐乎,就想写个简单的爬虫玩玩,单线程的速度确实是慢,运行了大概两个小时,才爬到了4500张图片,这个效率感人

<?php class Cow{ public $url = http://xxxxx.com; //就是举个例子,这个要爬的网站就不提供了 public $img = /<img src=”(.*?jpg)”/; public $href = /(\/arc\/.*?)”/; public $boxes = []; public function run($url){ ini_set(memory_limit, 2048M); //设置使用内存 set_time_limit(0); //脚本超时时间设置为0 $url = rtrim($url,/); //清洗url $content = file_get_contents($url); //获取url内容 $nname = ./xxx/.strrchr($url,/)..txt; file_put_contents($nname,$content); $fp = fopen($nname, “r”) or die(“Unable to open file!”); do{ $line = fgets($fp); //循环一行一行的读取 //根据正则匹配需要的字符串 ,保存图片 if(preg_match($this->img,$line,$matchs)){ $url = str_replace(https,http,$matchs[1]); $img = file_get_contents($url); file_put_contents(./npyimg/.$this->str_random(5)..jpg,$img); echo $url.PHP_EOL; } //如果匹配到下一页的字符串, 启用递归 if(preg_match($this->href,$line,$matchs)){ $url = $this->url.$matchs[1]; if(!in_array($url,$this->boxes)){ echo $url.PHP_EOL; $this->boxes[] = $url; $this->run($url); } } }while(!feof($fp)); echo the end.PHP_EOL; } //生成随机数 private function str_random($len){ $len = $len/2; $bytes = random_bytes($len); return bin2hex($bytes); } } $cow = new Cow(); $cow->run($cow->url); ?>

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片