PHP一个简单的无需刷新爬虫

 更新时间:2019年01月05日 14:50:01   作者:只是个宝宝  
今天小编就为大家分享一篇关于PHP一个简单的无需刷新爬虫,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

由于只是一个小示例,所以过程化简单写了,小菜随便参考,大神大可点解

<?php 
//设置最大执行时间
set_time_limit(0);
function getHtml($url){
  // 1. 初始化
   $ch = curl_init();
   // 2. 设置选项,包括URL
   curl_setopt($ch,CURLOPT_URL,$url);
   curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
   curl_setopt($ch,CURLOPT_HEADER,0);
   // 3. 执行并获取HTML文档内容
   $output = curl_exec($ch);
   if($output === FALSE ){
    $output = '';
   }
   // 4. 释放curl句柄
   curl_close($ch);
   return $output;
}
function getPageData($url){
  // 获取整个网页内容
  $html = getHtml($url);
  // 初步获取主块内容
  preg_match("/教程列表.*教程列表/s",$html,$body_html);
  // 返回数据
  $data = array();
  //判断是否存在要获取的内容
  if(count($body_html)){
    // 获取页面指定信息
    preg_match_all('/<a class="avatar".*user_id="(\S*)" href="(\S*)" rel="external nofollow" /',$body_html[0],$info_1);
    preg_match_all('/<a href="(.*)" rel="external nofollow" .*title="(.*)"/',$body_html[0],$info_2);
    $info = array_merge($info_1,$info_2);
    //组合的信息
    for($index=0; $index<count($info[0]); $index++){
      //以文章信息作为key存数组,以及覆盖旧数据
      $data[$info[4][$index]] = array(
              'user_id'  => $info[1][$index],
              'user_home' => $info[2][$index],
              'a_url'   => $info[4][$index],
              'a_title'  => $info[5][$index],
           );
    }
  }
  return $data;
}
header("Content-type: text/html; charset=utf-8"); 
echo '<pre>';
// 初始化数据
$page_no = 1;
$data_all = array();
// 分页获取数据
do{
  $url = 'http://www.thinkphp.cn/code/examples/p/' . $page_no;
  $data = getPageData($url);
  $data_all += $data;
  $page_no ++;
}while ($page_no <= 10); //当前只获取10页,如果要全部获取则把条件换成$data或!empty($data)
var_dump($data_all);
?>

接下的入表库当然就不写了,那些更小意思了~就此别过吧~

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • PHP验证码类ValidateCode解析

    PHP验证码类ValidateCode解析

    这篇文章主要为大家详细解析了PHP验证码类ValidateCode,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • Google Voice 短信发送接口PHP开源版(2010.5更新)

    Google Voice 短信发送接口PHP开源版(2010.5更新)

    Google Voice 短信发送接口PHP开源版,以前的版本不能用了,作者于2010年5月进行了更新。
    2010-07-07
  • smarty模板引擎中内建函数if、elseif和else的使用方法

    smarty模板引擎中内建函数if、elseif和else的使用方法

    这篇文章主要介绍了smarty模板引擎中内建函数if、elseif和else的使用方法,通过两个示例分析了if、elseif和else的使用技巧,需要的朋友可以参考下
    2015-01-01
  • 30个php操作redis常用方法代码例子

    30个php操作redis常用方法代码例子

    这篇文章主要介绍了30个php操作redis常用方法代码例子,本文其实不止30个方法,可以操作string类型、list类型和set类型的数据,需要的朋友可以参考下
    2014-07-07
  • PHP图像识别技术原理与实现

    PHP图像识别技术原理与实现

    本篇文章主要介绍了PHP图像识别技术原理与实现,这个平时做的密码验证有异曲同工之处,有需要的可以了解一下。
    2016-10-10
  • 微信第三方登录(原生)demo【必看篇】

    微信第三方登录(原生)demo【必看篇】

    下面小编就为大家带来一篇微信第三方登录(原生)demo【必看篇】。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • php面向对象与面向过程两种方法给图片添加文字水印

    php面向对象与面向过程两种方法给图片添加文字水印

    使用许多编程语言时,你通常只能使用面向对象或面向过程二者之一的编程方式。而在PHP中,你可以自由选择或混用,下面通过面向对象与面向过程两种方法给图片添加水印,需要的朋友可以参考下
    2015-08-08
  • 使用ThinkPHP生成缩略图及显示

    使用ThinkPHP生成缩略图及显示

    这篇文章主要为大家详细介绍了使用ThinkPHP生成缩略图及显示的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • PHP实现常用排序算法的方法

    PHP实现常用排序算法的方法

    本文主要介绍了一些常用的排序算法,以及PHP的代码实现等,感兴趣的朋友跟随小编一起看看吧
    2020-02-02
  • PHP数组实例详解

    PHP数组实例详解

    这篇文章主要介绍了PHP数组实例详解的相关资料,数组分为数组数值数值,关联数组,多维数组,本文介绍的非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06

最新评论