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_Flame(Version:Progress)的原代码
Oct 09 PHP
一段php加密解密的代码
Oct 09 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
Jun 26 PHP
ecshop后台编辑器替换成ueditor编辑器
Mar 03 PHP
PHP也能干大事 随机函数
Apr 14 PHP
详解PHP数组赋值方法
Nov 07 PHP
教你在header中隐藏php的版本信息
Aug 10 PHP
PHP实现的MD5结合RSA签名算法实例
Oct 07 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
Mar 12 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
Sep 07 PHP
PHP判断当前使用的是什么浏览器(推荐)
Oct 27 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 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 parse_ini_file函数的应用与扩展操作示例
2019/01/07 PHP
Javascript的一种模块模式
2008/03/22 Javascript
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
基于jquery的无缝循环新闻列表插件
2011/03/07 Javascript
Javascript alert消息换行的方法
2013/08/07 Javascript
2014 HTML5/CSS3热门动画特效TOP10
2014/12/07 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
深入浅析react native es6语法
2015/12/09 Javascript
AngularJS 让人爱不释手的八种功能
2016/03/23 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
2017/07/10 Javascript
vue自定义指令的创建和使用方法实例分析
2018/12/04 Javascript
微信小程序实现同一页面取值的方法分析
2019/04/30 Javascript
亲自动手实现vue日历控件
2019/06/26 Javascript
openlayers4实现点动态扩散
2020/08/17 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
2021/01/26 Vue.js
Python中的二叉树查找算法模块使用指南
2014/07/04 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
Django框架 Pagination分页实现代码实例
2019/09/04 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
django实现模板中的字符串文字和自动转义
2020/03/31 Python
python合并多个excel文件的示例
2020/09/23 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
css3学习心得分享
2013/08/19 HTML / CSS
CSS书写规范、顺序和命名规则
2014/03/06 HTML / CSS
马歇尔耳机官网:Marshall Headphones
2020/02/04 全球购物
自考自我鉴定范文
2013/10/30 职场文书
上班睡觉检讨书
2014/01/09 职场文书
写演讲稿所需要注意的4个条件
2014/01/09 职场文书
大学生学习自我评价
2014/01/13 职场文书
护理学院专科毕业生求职信
2014/06/28 职场文书
物业总经理助理岗位职责
2014/06/29 职场文书
交通肇事罪辩护词
2015/05/21 职场文书
python 爬取豆瓣网页的示例
2021/04/13 Python
python opencv将多个图放在一个窗口的实例详解
2022/02/28 Python