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 内存缓存加速功能memcached安装与用法
Sep 03 PHP
php INI配置文件的解析实现分析
Jan 04 PHP
在smarty中调用php内置函数的方法
Feb 07 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
Sep 30 PHP
PHP实现的MongoDB数据库操作类分享
May 12 PHP
thinkphp3.0输出重复两次的解决方法
Dec 19 PHP
详解PHP对数组的定义以及数组的创建方法
Nov 27 PHP
php实现和c#一致的DES加密解密实例
Jul 24 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
Yii框架参数配置文件params用法实例分析
Sep 11 PHP
Yii框架Session与Cookie使用方法示例
Oct 14 PHP
php pdo连接数据库操作示例
Nov 18 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
常用星际术语索引(新手指南)
2020/03/04 星际争霸
Protoss建筑一览
2020/03/14 星际争霸
php解析base64数据生成图片的方法
2016/12/06 PHP
php中的buffer缓冲区用法分析
2019/05/31 PHP
js下弹出窗口的变通
2007/04/18 Javascript
分享别人写的一个小型js框架
2007/08/13 Javascript
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
JQuery魔力之$(&quot;tagName&quot;)与selector
2012/03/05 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
node.js中的events.emitter.once方法使用说明
2014/12/10 Javascript
用JavaScript实现对话框的教程
2015/06/04 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
2017/09/04 Javascript
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
带你使用webpack快速构建web项目的方法
2020/11/12 Javascript
Python利用Django如何写restful api接口详解
2018/06/08 Python
python实现三维拟合的方法
2018/12/29 Python
python实现两张图片的像素融合
2019/02/23 Python
对python中的控制条件、循环和跳出详解
2019/06/24 Python
Python实现基于SVM的分类器的方法
2019/07/19 Python
Keras自定义IOU方式
2020/06/10 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
终止劳动合同协议书
2014/04/14 职场文书
家长会欢迎词
2015/01/23 职场文书
银行招聘自荐信
2015/03/06 职场文书
开学典礼观后感
2015/06/15 职场文书
生日赠语
2015/06/23 职场文书
初中语文教学研修日志
2015/11/13 职场文书
在Centos 8.0中安装Redis服务器的教程详解
2022/03/21 Redis
python数字图像处理:图像的绘制
2022/06/28 Python