jquery+thinkphp实现跨域抓取数据的方法


Posted in PHP onOctober 15, 2016

本文实例讲述了jquery+thinkphp实现跨域抓取数据的方法。分享给大家供大家参考,具体如下:

今天做一个远程抓取数据的功能,记得jquery可以用Ajax远程抓取,但不能跨域。再网上找了很多。但我觉得还是来个综合的,所以我现在觉得有点把简单问题复杂化了,但至少目前解决了:

跨域抓取数据到本地数据库再异步更新的效果

我实现的方式:jquery的$.post发送数据到服务器后台,在由后台的PHP代码执行远程抓取,存到数据库ajax返回数据到前台,前台用JS接受数据并显示。

//远程抓取获取数据
 $("#update_ac").click(function() {
      $username = $("#username").text();
      $("#AC,#rank,#Submit,#solved,#solved2,#solved3").ajaxStart(function(){
        $(this).html("<span class='loading2'>   </span>");
      });
      $.post("update_ac/username/"+$username,{},function($data){
        json = eval("(" + $data + ")");
        $("#Submit").html(json.data.Submit);
        $("#AC").html(json.data.AC);
        $("#solved,#solved2,#solved3").html(json.data.solved);
        $("#rank").html(json.data.rank);
       }
      ),"json";
});

上面的jquery代码还算四楼比较清楚的,纠结我的就是那个json数据的接收

json = eval("(" + $data + ")");
//eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

其实这个都还是前台,跨域抓取是用php的扩展simple_html_dom完成的(不清楚的可以到网上去搜一搜,基于PHP5开发的)

把远程的页面抓取到本地。

import("@.ORG.simple_html_dom");
//thinkphp内导入扩展,你要把网上下载的代码改名为simple_html_dom.class.php放到APPNAME\Lib\ORG的目录下面
$html = file_get_html('http://openoj.awaysoft.com/JudgeOnline/userinfo.php?user='.$username); //远程抓取了
$ret = $html->find('center',0)->plaintext; //返回数据了。

上面的代码只是核心代码,simple_html_dom扩展的还有很多功能。自己去了解吧。

返回的数据是一个字符串,再用正则表达式去筛选需要的数据就了 下面是效果图

jquery+thinkphp实现跨域抓取数据的方法

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
用php获取本周,上周,本月,上月,本季度日期的代码
Aug 05 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
Apr 09 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
Jun 03 PHP
php中url传递中文字符,特殊危险字符的解决方法
Aug 17 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
php禁止某ip或ip地址段访问的方法
Feb 25 PHP
Laravel 5框架学习之Laravel入门和新建项目
Apr 07 PHP
Yii中Model(模型)的创建及使用方法
Dec 28 PHP
总结PHP中DateTime的常用方法
Aug 11 PHP
php防止sql注入的方法详解
Feb 20 PHP
PHP对称加密算法(DES/AES)类的实现代码
Nov 14 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
Oct 16 PHP
php组合排序简单实现方法
Oct 15 #PHP
PHP中字符与字节的区别及字符串与字节转换示例
Oct 15 #PHP
php实现博客,论坛图片防盗链的方法
Oct 15 #PHP
PHP云打印类完整示例
Oct 15 #PHP
PHP实现统计在线人数功能示例
Oct 15 #PHP
Thinkphp连表查询及数据导出方法示例
Oct 15 #PHP
PHP实现导出excel数据的类库用法示例
Oct 15 #PHP
You might like
php中inlcude()性能对比详解
2012/09/16 PHP
php实现转换ubb代码的方法
2015/06/18 PHP
PHP获取当前相对于域名目录的方法
2015/06/26 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
javaScript call 函数的用法说明
2010/04/09 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
2014/11/08 Javascript
JS实现具备延时功能的滑动门菜单效果
2015/09/17 Javascript
实现非常简单的js双向数据绑定
2015/11/06 Javascript
JavaScript 消息框效果【实现代码】
2016/04/27 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
JavaScript requestAnimationFrame动画详解
2017/09/14 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
2017/10/26 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
vue中手机号,邮箱正则验证以及60s发送验证码的实例
2018/03/16 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
2018/09/13 Javascript
vue-cli配置flexible过程详解
2019/07/04 Javascript
angular异步验证防抖踩坑实录
2019/12/01 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
2020/08/20 Javascript
深入理解Python中的内置常量
2017/05/20 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
使用Python处理BAM的方法
2018/09/28 Python
anaconda中更改python版本的方法步骤
2019/07/14 Python
使用TFRecord存取多个数据案例
2020/02/17 Python
详解python with 上下文管理器
2020/09/02 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
css3隔行变换色实现示例
2014/02/19 HTML / CSS
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
Java中的基本数据类型所占存储空间大小固定的吗
2012/02/15 面试题
仓库管理专业个人自我评价范文
2013/11/11 职场文书
拯救大兵瑞恩观后感
2015/06/09 职场文书
立春观后感
2015/06/18 职场文书
如何使用Maxwell实时同步mysql数据
2021/04/08 MySQL
python实现股票历史数据可视化分析案例
2021/06/10 Python