php实现递归抓取网页类实例


Posted in PHP onApril 03, 2015

本文实例讲述了php实现递归抓取网页类的方法。分享给大家供大家参考。具体如下:

<?php
class crawler{
 private $_depth=5;
 private $_urls=array();
 function extract_links($url)
 {
  if(!$this->_started){
   $this->_started=1;
   $curr_depth=0;
  }else{
   $curr_depth++;
  }
  if($curr_depth<$this->_depth)
  {
   $data=file_get_contents($url);
   if(preg_match_all('/((?:http|https)://(?:www.)*(?:[a-zA-Z0-9_-]{1,15}.+[a-zA-Z0-9_]{1,}){1,}(?:[a-zA-Z0-9_/.-?&:%,!;]*))/',$data,$urls12))
   {
    foreach($urls12[0] as $k=>$v){
     $check=get_headers($v,1);
     if(strstr($v,$url) && $check[0]=='HTTP/1.1 200 OK' && !array_search($v,$this->_urls) && $curr_depth<$this->_depth){
      $this->_urls[]=$v;
      $this->extract_links($v);
     }
    }
   }
  }
  return $this->_urls;
 }
}
?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP5中的时间相差8小时的解决办法
Mar 28 PHP
PHP项目开发中最常用的自定义函数整理
Dec 02 PHP
fleaphp rolesNameField bug解决方法
Apr 23 PHP
PHP把小数转成整数3种方法
Jun 30 PHP
PHP命名空间(namespace)的动态访问及使用技巧
Aug 18 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
Nov 19 PHP
php、java、android、ios通用的3des方法(推荐)
Sep 09 PHP
PHP 闭包详解及实例代码
Sep 28 PHP
PHP中empty,isset,is_null用法和区别
Feb 19 PHP
关于PHP定时发送服务的解决办法
Apr 23 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
Oct 15 PHP
php调整服务器时间的方法
Apr 03 #PHP
php实现图片转换成ASCII码的方法
Apr 03 #PHP
php解析字符串里所有URL地址的方法
Apr 03 #PHP
php对文件进行hash运算的方法
Apr 03 #PHP
php计算给定时间之前的函数用法实例
Apr 03 #PHP
php实现的mongodb操作类实例
Apr 03 #PHP
PHP中判断文件存在使用is_file还是file_exists?
Apr 03 #PHP
You might like
PHP has encountered an Access Violation
2007/01/15 PHP
php 数组二分法查找函数代码
2010/02/16 PHP
PHP设计模式之装饰者模式
2012/02/29 PHP
浅谈php冒泡排序
2014/12/30 PHP
浅谈php命令行用法
2015/02/04 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
Div自动滚动到末尾的代码
2008/10/26 Javascript
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
2011/04/27 Javascript
如何将一个String和多个String值进行比较思路分析
2013/04/22 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
优化RequireJS项目的相关技巧总结
2015/07/01 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
gulp-htmlmin压缩html的gulp插件实例代码
2016/06/06 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
js实现用户输入的小写字母自动转大写字母的方法
2017/01/21 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
vue组件挂载到全局方法的示例代码
2018/08/02 Javascript
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
JS跨浏览器解析XML应用过程详解
2020/10/16 Javascript
Python和php通信乱码问题解决方法
2014/04/15 Python
Python中操作符重载用法分析
2016/04/29 Python
Django admin美化插件suit使用示例
2017/12/12 Python
Python多线程处理实例详解【单进程/多进程】
2019/01/30 Python
解决python gdal投影坐标系转换的问题
2020/01/17 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
英国在线药房:Chemist.co.uk
2019/03/26 全球购物
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
新锐科技Java程序员面试题
2016/07/25 面试题
教师考核表个人总结
2015/02/12 职场文书
大学生自荐信怎么写
2015/03/26 职场文书
2016年元旦主持词
2015/07/06 职场文书
关于antd tree 和父子组件之间的传值问题(react 总结)
2021/06/02 Javascript
nginx作grpc的反向代理踩坑总结
2021/07/07 Servers
js 数组 fill() 填充方法
2021/11/02 Javascript