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 相关文章推荐
实用函数2
Nov 08 PHP
Phpbean路由转发的php代码
Jan 10 PHP
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
Apr 09 PHP
PHP递归返回值时出现的问题解决办法
Feb 19 PHP
php连接函数implode与分割explode的深入解析
Jun 26 PHP
微信扫描二维码登录网站代码示例
Dec 30 PHP
PHP实现变色验证码实例
Jan 06 PHP
实例简介PHP的一些高级面向对象编程的特性
Nov 27 PHP
php使用curl详细解析及问题汇总
Aug 11 PHP
PHP入门教程之上传文件实例详解
Sep 11 PHP
浅析php-fpm静态和动态执行方式的比较
Nov 09 PHP
php插入mysql数据返回id的方法
May 31 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提交过来的数据生成为txt文件
2016/04/28 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
javascript 文件的同步加载与异步加载实现原理
2012/12/13 Javascript
JS定义回车事件(实现代码)
2013/07/08 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
js简单的点击返回顶部效果实现方法
2015/04/10 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
jquery动态遍历Json对象的属性和值的方法
2016/07/27 Javascript
微信小程序 动态传参实例详解
2017/04/27 Javascript
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
js canvas实现简单的图像扩散效果
2020/06/28 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
Vue通过for循环随机生成不同的颜色或随机数的实例
2019/11/09 Javascript
Python与shell的3种交互方式介绍
2015/04/11 Python
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
python 与服务器的共享文件夹交互方法
2018/12/27 Python
python-numpy-指数分布实例详解
2019/12/07 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
详解Python3 中的字符串格式化语法
2020/01/15 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
GEOX鞋美国官方网站:意大利会呼吸的鞋
2017/07/12 全球购物
美国伊甸园兄弟种子公司:Eden Brothers
2018/07/01 全球购物
Unineed中文官网:高端护肤美妆与时尚配饰,英国直邮
2020/07/23 全球购物
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
2012/09/06 面试题
称象教学反思
2014/02/03 职场文书
艾滋病宣传活动总结
2014/05/08 职场文书
行政专员岗位职责说明书
2014/09/01 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
2014年学校工会工作总结
2014/12/06 职场文书
学校光盘行动倡议书
2015/04/28 职场文书
创业计划书之餐饮
2019/09/02 职场文书
vue基于Teleport实现Modal组件
2021/05/31 Vue.js
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis
php解析非标准json、非规范json的方式实例
2022/05/10 PHP