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和ACCESS写聊天室(九)
Oct 09 PHP
一步一步学习PHP(8) php 数组
Mar 05 PHP
PHP 关于访问控制的和运算符优先级介绍
Jul 08 PHP
php多个文件及图片上传实例详解
Nov 10 PHP
PHP中array_keys和array_unique函数源码的分析
Feb 26 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
Mar 07 PHP
PHP中如何防止外部恶意提交调用ajax接口
Apr 11 PHP
用HTML/JS/PHP方式实现页面延时跳转的简单实例
Jul 18 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
Nov 25 PHP
php实现的错误处理封装类实例
Jun 20 PHP
laravel 实现设置时区的简单方法
Oct 10 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 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
中国第一家无线电行
2021/03/01 无线电
php上传、管理照片示例
2006/10/09 PHP
php获取淘宝分类id示例
2014/01/16 PHP
php将csv文件导入到mysql数据库的方法
2014/12/24 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
2016/10/22 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
通过length属性判断jquery对象是否存在
2013/10/18 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
JS+CSS实现仿msn风格选项卡效果代码
2015/10/22 Javascript
jQuery结合CSS制作动态的下拉菜单
2015/10/27 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
前端开发之CSS原理详解
2017/03/11 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
微信小程序获取公众号文章列表及显示文章的示例代码
2020/03/10 Javascript
Python实现的弹球小游戏示例
2017/08/01 Python
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
Python设计模式之工厂方法模式实例详解
2019/01/18 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
python ubplot使用方法解析
2020/01/10 Python
python实现飞机大战项目
2020/03/11 Python
如何解决flask修改静态资源后缓存文件不能及时更改问题
2020/08/02 Python
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
英国剑桥包中文官网:The Cambridge Satchel Company中国
2018/11/06 全球购物
工厂总经理岗位职责
2014/02/07 职场文书
查摆问题整改措施范文
2014/10/11 职场文书
毕业生见习报告总结
2014/11/08 职场文书
入党函调证明材料
2014/12/24 职场文书
最新的离婚协议书范本!
2019/07/02 职场文书
导游词之太行山青龙峡
2020/01/14 职场文书
使用python+pygame开发消消乐游戏附完整源码
2021/06/10 Python