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 和 MYSQL
Oct 09 PHP
php中通过smtp发邮件的类,测试通过
Jan 22 PHP
php获取当前网址url并替换参数或网址的方法
Jun 06 PHP
一个基于PDO的数据库操作类
Mar 24 PHP
关于UEditor编辑器远程图片上传失败的解决办法
Aug 31 PHP
ThinkPHP内置jsonRPC的缺陷分析
Dec 18 PHP
PHP中开启gzip压缩的2种方法
Jan 31 PHP
yii2利用自带UploadedFile实现上传图片的示例
Feb 16 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
Oct 18 PHP
在 Laravel 6 中缓存数据库查询结果的方法
Dec 11 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
Dec 13 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
Oct 27 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根据分类合并数组的方法实例详解
2013/11/06 PHP
php使用base64加密解密图片示例分享
2014/01/20 PHP
thinkphp的dump函数无输出实例代码
2016/11/15 PHP
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
2008/09/26 Javascript
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
jquery 鼠标滑动显示详情应用示例
2014/01/24 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
JS动态创建元素的两种方法
2016/04/20 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
JS排序之快速排序详解
2017/04/08 Javascript
JavaScript表单验证实现代码
2017/05/22 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
2017/06/04 Javascript
AngularJS自定义指令详解(有分页插件代码)
2017/06/12 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
babel的使用及安装配置教程
2018/02/22 Javascript
vue之浏览器存储方法封装实例
2018/03/15 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
JavaScript实现网页留言板功能
2020/11/23 Javascript
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
Python3安装Scrapy的方法步骤
2017/11/23 Python
python 批量修改/替换数据的实例
2018/07/25 Python
python3 中文乱码与默认编码格式设定方法
2018/10/31 Python
python re库的正则表达式入门学习教程
2019/03/08 Python
python requests证书问题解决
2019/09/05 Python
python关于调用函数外的变量实例
2019/12/26 Python
tensorflow 变长序列存储实例
2020/01/20 Python
python函数定义和调用过程详解
2020/02/09 Python
没编程基础可以学python吗
2020/06/17 Python
UNIONBAY官网:美国青少年服装品牌
2019/03/26 全球购物
Kickers鞋英国官网:男士、女士和儿童鞋
2021/03/08 全球购物
EJB timer的种类
2014/10/28 面试题
What is EJB
2016/07/22 面试题
法律进学校实施方案
2014/03/15 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
公司合并协议书范本
2014/09/30 职场文书