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 相关文章推荐
JAVA/JSP学习系列之二
Oct 09 PHP
mysql下创建字段并设置主键的php代码
May 16 PHP
php遍历目录输出目录及其下的所有文件示例
Jan 27 PHP
PHP两种去掉数组重复值的方法比较
Jun 19 PHP
个人写的PHP验证码生成类分享
Aug 21 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
Nov 05 PHP
php排序算法实例分析
Oct 17 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
Oct 12 PHP
php探针不显示内存解决方法
Sep 17 PHP
PHP实用小技巧之调用录像的方法
Dec 05 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
Dec 12 PHP
php7中停止php-fpm服务的方法详解
May 09 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截取中文字符串的问题
2006/07/12 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
Chrome Web App开发小结
2014/09/04 PHP
PHP中require和include路径问题详解
2014/12/25 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
PHP闭包函数传参及使用外部变量的方法
2016/03/15 PHP
PHP线程的内存回收问题
2016/07/08 PHP
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
自己动手制作jquery插件之自动添加删除行功能介绍
2011/10/14 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
JS动态增加删除UL节点LI及相关内容示例
2014/05/21 Javascript
javascript 寻找错误方法整理
2014/06/15 Javascript
html的DOM中Event对象onblur事件用法实例
2015/01/21 Javascript
Bootstrap入门书籍之(一)排版
2016/02/17 Javascript
Vue.js学习之计算属性
2017/01/22 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
2017/10/16 Javascript
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
微信小程序实现上传图片裁剪图片过程解析
2019/08/22 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
python中随机函数random用法实例
2015/04/30 Python
Python并行分布式框架Celery详解
2018/10/15 Python
pygame游戏之旅 添加游戏暂停功能
2018/11/21 Python
Python对HTML转义字符进行反转义的实现方法
2019/04/28 Python
Python爬取365好书中小说代码实例
2020/02/28 Python
python3用urllib抓取贴吧邮箱和QQ实例
2020/03/10 Python
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
英国门把手公司:Door Handle Company
2019/05/12 全球购物
意大利在线高尔夫商店:Online Golf
2021/03/09 全球购物
工程采购员岗位职责
2014/03/09 职场文书
教师节活动主持词
2014/04/02 职场文书
电子商务专业毕业生求职信
2014/06/12 职场文书
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫
Python调用腾讯API实现人脸身份证比对功能
2022/04/04 Python