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过滤危险html代码的函数
Jul 22 PHP
php Smarty date_format [格式化时间日期]
Mar 15 PHP
在项目中寻找代码的坏命名
Jul 14 PHP
浅谈php函数serialize()与unserialize()的使用方法
Aug 19 PHP
PHP过滤黑名单关键字的方法
Dec 01 PHP
php生成不重复随机数、数组的4种方法分享
Mar 30 PHP
Yii扩展组件编写方法实例分析
Jun 29 PHP
php生成curl命令行的方法
Dec 14 PHP
如何打开php的gd2库
Feb 09 PHP
使用PHPMailer发送邮件实例
Feb 15 PHP
PHP PDOStatement::errorInfo讲解
Jan 31 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
Feb 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获取从html表单传递数组的方法
2015/03/20 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
解决iframe的frameborder在chrome/ff/ie下的差异
2010/08/12 Javascript
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
JavaScript跨域方法汇总
2014/10/16 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
2016/05/05 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
javascript时间差插件分享
2016/07/18 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
Vue组件通信的四种方式汇总
2018/02/08 Javascript
在element-ui的select下拉框加上滚动加载
2019/04/18 Javascript
Vue3.x源码调试的实现方法
2019/10/13 Javascript
JS精确判断数据类型代码实例
2019/12/18 Javascript
Vue指令实现OutClick的示例
2020/11/16 Javascript
python中去空格函数的用法
2014/08/21 Python
python使用正则表达式分析网页中的图片并进行替换的方法
2015/03/26 Python
python使用PIL缩放网络图片并保存的方法
2015/04/24 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
python批量修改文件夹及其子文件夹下的文件内容
2019/03/15 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
2019/04/02 Python
Python面向对象实现一个对象调用另一个对象操作示例
2019/04/08 Python
详解python解压压缩包的五种方法
2019/07/05 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
意大利辅助药品、药物和补品在线销售:FarmaEurope
2020/04/29 全球购物
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
上课说话检讨书大全
2014/01/22 职场文书
高三数学复习备考教学反思
2016/02/18 职场文书
Redis如何一键部署脚本
2021/04/12 Redis
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL