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邮件类
Jan 03 PHP
PHP实现多条件查询实例代码
Jul 17 PHP
PHP 图片文件上传实现代码
Dec 29 PHP
CodeIgniter框架URL路由总结
Sep 03 PHP
Yii框架调试心得--在页面输出执行sql语句
Dec 25 PHP
PHP抽奖算法程序代码分享
Oct 08 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
Aug 01 PHP
PHP简单检测网址是否能够正常打开的方法
Sep 04 PHP
php compact 通过变量创建数组
Nov 15 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
Dec 21 PHP
微信公众号开发之获取位置信息php代码
Jun 13 PHP
PHP下载大文件失败并限制下载速度的实例代码
May 10 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中usort在值相同时改变原始位置问题的解决方法
2011/11/27 PHP
一个图片地址分解程序(用于PHP小偷程序)
2014/08/23 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
Javascript MD4
2006/12/20 Javascript
js 数组实现一个类似ruby的迭代器
2009/10/27 Javascript
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
js自动闭合html标签(自动补全html标记)
2012/10/04 Javascript
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
JS清空多文本框、文本域示例代码
2014/02/24 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
BootStrap和jQuery相结合实现可编辑表格
2016/04/21 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
jQuery命名空间与闭包用法示例
2017/01/12 Javascript
深入理解Vue官方文档梳理之全局API
2017/11/22 Javascript
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
浅谈开发eslint规则
2018/10/01 Javascript
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
Python实现的概率分布运算操作示例
2017/08/14 Python
Python数据结构之单链表详解
2017/09/12 Python
使用TensorFlow实现二分类的方法示例
2019/02/05 Python
Python语法分析之字符串格式化
2019/06/13 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
Pytorch实现神经网络的分类方式
2020/01/08 Python
Python super()方法原理详解
2020/03/31 Python
python不同版本的_new_不同点总结
2020/12/09 Python
阿玛尼意大利官网:Armani意大利
2018/10/30 全球购物
护士求职推荐信范文
2013/11/23 职场文书
学生励志演讲稿
2014/01/06 职场文书
上海世博会志愿者口号
2014/06/17 职场文书
五月的鲜花活动方案
2014/08/21 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书