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 相关文章推荐
php str_replace的替换漏洞
Mar 15 PHP
解析php中session的实现原理以及大网站应用应注意的问题
Jun 17 PHP
php读取目录所有文件信息dir示例
Mar 18 PHP
PHP安全的URL字符串base64编码和解码
Jun 19 PHP
php返回json数据函数实例
Oct 09 PHP
简单了解PHP编程中数组的指针的使用
Nov 30 PHP
支付宝服务窗API接口开发php版本
Jul 20 PHP
php无限级评论嵌套实现代码
Apr 18 PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 PHP
laravel 5.5 关闭token的3种实现方式
Oct 24 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
Jan 04 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获取字段名示例分享
2014/03/03 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
javascript fullscreen全屏实现代码
2009/04/09 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
2015/03/14 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
微信小程序 JS动态修改样式的实现代码
2017/02/10 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
深入理解vue Render函数
2017/07/19 Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
2017/09/20 Javascript
Router解决跨模块下的页面跳转示例
2018/01/11 Javascript
vue首次赋值不触发watch的解决方法
2018/09/11 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
2019/05/14 Javascript
JQuery 实现文件下载的常用方法分析
2019/10/29 jQuery
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
深入解析Python中的list列表及其切片和迭代操作
2016/03/13 Python
Python实现调度算法代码详解
2017/12/01 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
解决Django migrate No changes detected 不能创建表的问题
2018/05/27 Python
python自动发微信监控报警
2019/09/06 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
PyTorch中topk函数的用法详解
2020/01/02 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
自荐信格式写作方法有哪些呢
2013/11/20 职场文书
交警个人先进事迹材料
2014/05/11 职场文书
汽车维修求职信
2014/06/15 职场文书
开会通知
2015/04/20 职场文书