php 抓取网页ajax数据(jquery实例讲述jquery+thinkphp实现跨域抓取数据的方法。)
优采云 发布时间: 2022-01-05 06:16php 抓取网页ajax数据(jquery实例讲述jquery+thinkphp实现跨域抓取数据的方法。)
本文介绍了用jquery+thinkphp实现跨域数据抓取的方法。分享给大家,供大家参考,如下:
今天,我将做一个远程数据捕获功能。请记住,使用 Ajax 可以远程捕获 jquery,但它不能跨域。我在网上搜索了很多。不过我觉得是综合的,所以觉得简单的问题有点复杂,不过至少目前已经解决了:
跨域取数据到本地数据库然后异步更新的效果
我实现的方式:jquery的$.post发送数据到服务器后端,由后端PHP代码远程获取,存入数据库ajax返回数据给前台,前台用JS接收数据并显示出来。
//远程抓取获取数据
$("#update_ac").click(function() {
$username = $("#username").text();
$("#AC,#rank,#Submit,#solved,#solved2,#solved3").ajaxStart(function(){
$(this).html(" ");
});
$.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相关内容更感兴趣的读者可以查看本站主题:《ThinkPHP介绍教程》、《ThinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《Smarty模板基础教程》和《 PHP模板技术总结《》。
我希望本文对您基于 ThinkPHP 框架的 PHP 编程有所帮助。