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的网址
Nov 25 PHP
php+javascript的日历控件
Nov 19 PHP
非常精妙的PHP递归调用与静态变量使用
Dec 16 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
Nov 19 PHP
php生成shtml类用法实例
Dec 09 PHP
PHP贪婪算法解决0-1背包问题实例分析
Mar 23 PHP
php+ajax制作无刷新留言板
Oct 27 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
Dec 09 PHP
php-fpm开启状态统计的方法详解
Jun 23 PHP
php readfile()修改文件上传大小设置
Aug 11 PHP
php项目中类的自动加载实例讲解
Sep 12 PHP
laravel validate 设置为中文的例子(验证提示为中文)
Sep 29 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分页示例代码
2007/03/19 PHP
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
2010/05/15 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
2014/08/19 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
php使用CutyCapt实现网页截图保存的方法
2016/10/03 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
IE6 fixed的完美解决方案
2011/03/31 Javascript
File, FileReader 和 Ajax 文件上传实例分析(php)
2011/04/27 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
2015/11/17 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
2015/12/02 Javascript
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
2016/11/17 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
超简单的Vue.js环境搭建教程
2017/03/17 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
2019/04/25 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
2020/10/26 Javascript
[01:02:18]VGJ.S vs infamous Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
python两种遍历字典(dict)的方法比较
2014/05/29 Python
python追加元素到列表的方法
2015/07/28 Python
Python中的__slots__示例详解
2017/07/06 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
2020/03/10 Python
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
2020/11/17 HTML / CSS
介绍下Lucene建立索引的过程
2016/03/02 面试题
服装采购员岗位职责
2014/03/15 职场文书
学校食堂食品安全责任书
2014/07/28 职场文书
幼师辞职信范文
2015/02/27 职场文书
2016年党员公开承诺书范文
2016/03/24 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript
python内置模块之上下文管理contextlib
2022/06/14 Python