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 相关文章推荐
phpmyadmin的#1251问题
Nov 25 PHP
开源SNS系统-ThinkSNS
May 18 PHP
PHP开发中四种查询返回结果分析
Jan 02 PHP
PHP中date()日期函数有关参数整理
Jul 19 PHP
Parse正式发布开源PHP SDK
Aug 11 PHP
thinkphp浏览历史功能实现方法
Oct 29 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
php观察者模式应用场景实例详解
Feb 03 PHP
[原创]php实现数组按拼音顺序排序的方法
May 03 PHP
实例分析PHP将字符串转换成数字的方法
Jan 27 PHP
Laravel框架Request、Response及Session操作示例
May 06 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 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/11/25 PHP
php 在线打包_支持子目录
2008/06/28 PHP
php递归创建和删除文件夹的代码小结
2012/04/13 PHP
PHP将session信息存储到数据库的类实例
2015/03/04 PHP
php通过function_exists检测函数是否存在的方法
2015/03/18 PHP
Laravel 的数据库迁移的方法
2017/07/31 PHP
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
2014/02/28 Javascript
jQuery选择器源码解读(二):select方法
2015/03/31 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
jquery实现先淡出再折叠收起的动画效果
2015/08/07 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
javascript的几种写法总结
2016/09/30 Javascript
Angular.js中处理页面闪烁的方法详解
2017/03/09 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
pycharm中显示CSS提示的知识点总结
2019/07/29 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
pytorch 常用线性函数详解
2020/01/15 Python
pycharm2020.1.2永久破解激活教程,实测有效
2020/10/29 Python
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
娇韵诗法国官网:Clarins法国
2019/01/29 全球购物
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
高级护理专业毕业生推荐信
2013/12/25 职场文书
就业推荐表自我鉴定
2014/03/21 职场文书
贸易跟单员英文求职信
2014/04/19 职场文书
大班上学期幼儿评语
2014/04/30 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
湘江北去观后感
2015/06/15 职场文书
安全教育培训心得体会
2016/01/15 职场文书
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android
奥特曼十大神器:奥特手镯在榜,第一是贝利亚的神器
2022/03/18 日漫
详解Vue3使用axios的配置教程
2022/04/29 Vue.js