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


Posted in PHP onJanuary 05, 2019

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

<?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 相关文章推荐
PHP数据库调用类调用实例(详细注释)
Jul 12 PHP
PHP解析html类库simple_html_dom的转码bug
May 22 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
Nov 12 PHP
php中in_array函数用法分析
Nov 15 PHP
php内嵌函数用法实例
Mar 20 PHP
PHP加密解密实例分析
Dec 25 PHP
PHP中抽象类、接口的区别与选择分析
Mar 29 PHP
PHP 实现浏览记录并按日期分组
May 11 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
阿里云的WindowsServer2016上部署php+apache
Jul 17 PHP
php封装的pdo数据库操作工具类与用法示例
May 08 PHP
PHP fopen中文文件名乱码问题解决方案
Oct 28 PHP
PHP智能识别收货地址信息实例
Jan 05 #PHP
PHP数字金额转换成中文大写显示
Jan 05 #PHP
PHP yield关键字功能与用法分析
Jan 03 #PHP
PHP获取对象属性的三种方法实例分析
Jan 03 #PHP
PHP获取HTTP body内容的方法
Dec 31 #PHP
php两点地理坐标距离的计算方法
Dec 29 #PHP
php如何计算两坐标点之间的距离
Dec 29 #PHP
You might like
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
2013/07/01 PHP
preg_match_all使用心得分享
2014/01/31 PHP
PHP设计模式之简单投诉页面实例
2016/02/24 PHP
Javascript miscellanea -display data real time, using window.status
2007/01/09 Javascript
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
jQuery 数据缓存模块进化史详细介绍
2012/11/19 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
vue 地图可视化 maptalks 篇实例代码详解
2019/05/21 Javascript
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
2019/09/24 Javascript
javascript开发实现贪吃蛇游戏
2020/07/31 Javascript
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
python实现树形打印目录结构
2018/03/29 Python
更换Django默认的模板引擎为jinja2的实现方法
2018/05/28 Python
详解python里的命名规范
2018/07/16 Python
python+openCV利用摄像头实现人员活动检测
2019/06/22 Python
python点击鼠标获取坐标(Graphics)
2019/08/10 Python
使用NumPy读取MNIST数据的实现代码示例
2019/11/20 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
社区母亲节活动方案
2014/03/05 职场文书
培训讲师岗位职责
2014/04/13 职场文书
电子信息工程自荐信
2014/05/26 职场文书
四年级小学生评语
2014/12/26 职场文书
教师个人教学总结
2015/02/11 职场文书
给朋友的赠语
2015/06/23 职场文书
意外事故赔偿协议书
2016/03/22 职场文书
2016年企业安全生产月活动总结
2016/04/06 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书