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常用函数 推荐收藏保存
Feb 21 PHP
php 短链接算法收集与分析
Dec 30 PHP
PHP 异步执行方法,模拟多线程的应用分析
Jun 03 PHP
PHP-Fcgi下PHP的执行时间设置方法
Aug 02 PHP
2014年最新推荐的10款 PHP 开发框架
Aug 01 PHP
使用PHP Socket 编程模拟Http post和get请求
Nov 25 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
Jun 23 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
Sep 04 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
Docker搭建自己的PHP开发环境
Feb 24 PHP
PHP延迟静态绑定的深入讲解
Apr 02 PHP
laravel框架中表单请求类型和CSRF防护实例分析
Nov 23 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 xfocus防注入资料
2008/04/27 PHP
PHP读取MySQL数据代码
2008/06/05 PHP
php数组查找函数总结
2014/11/18 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
轻松学习jQuery插件EasyUI EasyUI创建菜单与按钮
2015/11/30 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
vue+vant使用图片预览功能ImagePreview的问题解决
2020/04/10 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
vue使用exif获取图片旋转,压缩的示例代码
2020/12/11 Vue.js
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
在Django框架中编写Contact表单的教程
2015/07/17 Python
python队列通信:rabbitMQ的使用(实例讲解)
2017/12/22 Python
Python爬取数据并写入MySQL数据库的实例
2018/06/21 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
Python操作json的方法实例分析
2018/12/06 Python
python 实现屏幕录制示例
2019/12/23 Python
详解Python IO口多路复用
2020/06/17 Python
Python实现京东抢秒杀功能
2021/01/25 Python
HTML5 表单验证失败的提示语问题
2017/07/13 HTML / CSS
美国在线面料商店:Online Fabric Store
2018/07/26 全球购物
丝芙兰意大利官方网站:Sephora.it
2019/12/13 全球购物
《圆明园的毁灭》教学反思
2014/02/28 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
长征观后感
2015/06/09 职场文书
创业计划书之书店
2019/09/10 职场文书
理解python中装饰器的作用
2021/07/21 Python
微信小程序中wxs文件的一些妙用分享
2022/02/18 Javascript