php 抓取网页ajax数据(本文远程抓取数据的功能)

优采云 发布时间: 2021-10-27 18:20

  php 抓取网页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("   ");

});

$.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人工客服


线