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 相关文章推荐
详细介绍:Apache+PHP+MySQL配置攻略
Sep 05 PHP
怎样在PHP中通过ADO调用Asscess数据库和COM程序
Oct 09 PHP
一个改进的UBB类
Oct 09 PHP
php 变量未定义等错误的解决方法
Jan 12 PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
Oct 04 PHP
定义php常量的详解
Jun 09 PHP
zf框架的Filter过滤器使用示例
Mar 13 PHP
php实现的返回数据格式化类实例
Sep 22 PHP
Windows7下的php环境配置教程
Feb 28 PHP
Yii2分页的使用及其扩展方法详解
May 23 PHP
Laravel 5.3 学习笔记之 错误&amp;日志
Aug 28 PHP
laravel-admin自动生成模块,及相关基础配置方法
Oct 08 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 彩色文字实现代码
2009/06/29 PHP
PHP 接入支付宝即时到账功能
2016/09/18 PHP
PHP-FPM的配置与优化讲解
2019/03/15 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
Javascript中暂停功能的实现代码
2007/03/04 Javascript
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
2013/01/23 Javascript
借助script进行Http跨域请求:JSONP实现原理及代码
2013/03/19 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
用jquery的attr方法实现图片切换效果
2017/02/05 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
2017/05/07 Javascript
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
2018/11/05 Javascript
实用Javascript调试技巧分享(小结)
2019/06/18 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
2020/08/06 Javascript
Python实现Tab自动补全和历史命令管理的方法
2015/03/12 Python
python3实现指定目录下文件sha256及文件大小统计
2019/02/25 Python
OpenCV模板匹配matchTemplate的实现
2019/10/18 Python
基于Numba提高python运行效率过程解析
2020/03/02 Python
Python xpath表达式如何实现数据处理
2020/06/13 Python
python中selenium库的基本使用详解
2020/07/31 Python
HTML5 File API改善网页上传功能
2009/08/19 HTML / CSS
大四学年自我鉴定
2013/11/13 职场文书
运动会广播稿60字
2014/01/15 职场文书
蛋糕店创业计划书
2014/05/06 职场文书
2019班干部竞选演讲稿范本!
2019/07/08 职场文书
英文诗歌翻译方法(赏析)
2019/08/16 职场文书
Go语言 go程释放操作(退出/销毁)
2021/04/30 Golang
微软Win11有哪些隐藏功能? windows11多个功能汇总
2021/11/21 数码科技
Redis实战高并发之扣减库存项目
2022/04/14 Redis