php 抓取网页ajax数据(基于ThinkPHP框架的PHP程序设计有所远程抓取数据的功能总结)

优采云 发布时间: 2022-02-04 09:17

  php 抓取网页ajax数据(基于ThinkPHP框架的PHP程序设计有所远程抓取数据的功能总结)

  本文示例介绍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("   ");

});

$.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编程有所帮助。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线