服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

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

2019-07-07 16:47只是个宝宝 PHP教程

今天小编就为大家分享一篇关于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教程PDO::lastInsertId讲解

    PDO::lastInsertId讲解

    今天小编就为大家分享一篇关于PDO::lastInsertId讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...

    php参考手册1772019-06-26
  • PHP教程PHP crypt()函数的用法讲解

    PHP crypt()函数的用法讲解

    今天小编就为大家分享一篇关于PHP crypt()函数的用法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...

    php参考手册4232019-06-14
  • PHP教程PHP获取ttf格式文件字体名的方法示例

    PHP获取ttf格式文件字体名的方法示例

    这篇文章主要介绍了PHP获取ttf格式文件字体名的方法,结合实例形式分析了php读取ttf字体文件属性的相关操作技巧,需要的朋友可以参考下...

    老虎会游泳3402019-06-05
  • PHP教程PHP中抽象类,接口功能、定义方法示例

    PHP中抽象类,接口功能、定义方法示例

    这篇文章主要介绍了PHP中抽象类,接口功能、定义方法,简单分析了php抽象类与接口的概念、功能、定义方法及相关注意事项,需要的朋友可以参考下...

    Sweet小马5132019-06-09
  • PHP教程tp5(thinkPHP5)框架实现多数据库查询的方法

    tp5(thinkPHP5)框架实现多数据库查询的方法

    这篇文章主要介绍了tp5(thinkPHP5)框架实现多数据库查询的方法,结合实例形式分析了thinkPHP5框架多数据库查询的相关配置、初始化及调用相关操作技巧,需要的朋友可以参考下...

    TBHacker2782019-07-04
  • PHP教程浅谈PHP封装CURL

    浅谈PHP封装CURL

    这篇文章主要介绍了PHP如何封装CURL,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...

    小狗最阳光1552019-06-05
  • PHP教程strpos() 函数判断字符串中是否包含某字符串的方法

    strpos() 函数判断字符串中是否包含某字符串的方法

    在本篇文章里小编给大家带来了一篇关于strpos() 函数判断字符串中是否包含某字符串的方法,有兴趣的朋友们学习下。...

    laozhang4062019-07-03
  • PHP教程利用PHP如何统计Nginx日志的User Agent数据

    利用PHP如何统计Nginx日志的User Agent数据

    这篇文章主要给大家介绍了关于如何利用PHP统计Nginx日志的User Agent数据的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...

    tlanyan4312019-06-05