这里有新鲜出炉的精品教程,程序狗速度看过来!
ThinkPHP 是一个开源的 PHP 框架,是为了简化企业级应用开发和敏捷 web 应用开发而诞生的。ThinkPHP 可以支持 windows/Unix/Liunx 等服务器环境,正式版需要 PHP5.0 以上版本支持,支持 MySql、PgSQL、Sqlite 以及 PDO 等多种数据库
这篇文章主要介绍了 jquery+thinkphp 实现跨域抓取数据的方法, 结合实例形式分析了 thinkPHP 结合 jQuery 的 ajax 实现跨域抓取数据的相关操作技巧, 需要的朋友可以参考下
本文实例讲述了 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 扩展的还有很多功能。自己去了解吧。
返回的数据是一个字符串,再用正则表达式去筛选需要的数据就了 下面是效果图
希望本文所述对大家基于 ThinkPHP 框架的 PHP 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0826/341951.html