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+javascript液晶时钟
Oct 09 PHP
深入php中var_dump方法的使用详解
Jun 24 PHP
php画图实例
Nov 05 PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
May 13 PHP
浅析PHP中Session可能会引起并发问题
Jul 23 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
Dec 07 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
Jul 14 PHP
PHP单例模式定义与使用实例详解
Feb 06 PHP
PHP中trait使用方法详细介绍
May 21 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
Jan 28 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
Feb 27 PHP
php数值计算num类简单操作示例
May 15 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使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
Jquery 表格合并的问题分享
2011/09/17 Javascript
JS的replace方法详细介绍
2012/11/09 Javascript
jQuery链使用指南
2015/01/20 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
Angularjs过滤器使用详解
2016/05/25 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
Nodejs下使用gm圆形裁剪并合成图片的示例
2018/02/22 NodeJs
webpack vue项目开发环境局域网访问方法
2018/03/20 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
用Cordova打包Vue项目的方法步骤
2019/02/02 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
Vue学习笔记之计算属性与侦听器用法
2019/12/07 Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
2020/07/18 Javascript
一行JavaScript代码如何实现瀑布流布局
2020/12/11 Javascript
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
python中类的属性和方法介绍
2018/11/27 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
Python生成pdf目录书签的实例方法
2020/10/29 Python
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
大学自荐信
2013/12/12 职场文书
11月升旗仪式讲话稿
2014/02/15 职场文书
组织生活会发言材料
2014/12/15 职场文书
美术教师个人工作总结
2015/02/06 职场文书
手写Spirit防抖函数underscore和节流函数lodash
2022/03/22 Javascript