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 相关文章推荐
抓取YAHOO股票报价的类
May 15 PHP
PHP 批量删除数据的方法分析
Oct 30 PHP
PHP 日志缩略名的创建函数代码
May 26 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
Aug 05 PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 PHP
php常用的url处理函数总结
Nov 19 PHP
php简单判断文本编码的方法
Jul 30 PHP
PHP制作用户注册系统
Oct 23 PHP
浅析php-fpm静态和动态执行方式的比较
Nov 09 PHP
PHP实现文件下载【实例分享】
Apr 28 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
Sep 11 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实现过滤掉非汉字字符只保留中文字符
2015/06/04 PHP
crontab无法执行php的解决方法
2016/01/25 PHP
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
2011/04/27 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
2013/10/22 Javascript
判断javascript的数据类型(示例代码)
2013/12/11 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
javascript实现瀑布流加载图片原理
2016/02/02 Javascript
详解NodeJs支付宝移动支付签名及验签
2017/01/06 NodeJs
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
2018/06/08 Javascript
Vue2 监听属性改变watch的实例代码
2018/08/27 Javascript
解决Angular4项目部署到服务器上刷新404的问题
2018/08/31 Javascript
微信小程序实现单选功能
2018/10/30 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
多个Vue项目部署到服务器的步骤记录
2020/10/22 Javascript
JavaScript实现简易计算器小功能
2020/10/22 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
python中的hashlib和base64加密模块使用实例
2014/09/02 Python
简单讲解Python中的数字类型及基本的数学计算
2016/03/11 Python
Python3中的列表,元组,字典,字符串相关知识小结
2017/11/10 Python
Django中Model的使用方法教程
2018/03/07 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
2019/01/30 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
2019/08/08 Python
Python Django 简单分页的实现代码解析
2019/08/21 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
2020/04/26 Python
HMV日本官网:全球知名的音乐、DVD和电脑游戏零售巨头
2016/08/13 全球购物
英国顶级足球鞋的领先零售商:Lovell Soccer
2019/08/27 全球购物
房屋转让协议书
2014/04/11 职场文书
装饰公司活动策划方案
2014/08/23 职场文书
中班下学期个人工作总结
2015/02/12 职场文书
护士个人年度总结范文
2015/02/13 职场文书
财务会计求职信范文
2015/03/20 职场文书