php跨域采集网页数据,jquery+thinkphp实现跨域抓取数据的方法

本文介绍了如何使用jQuery的$.post配合ThinkPHP的后台处理,实现跨域抓取数据并将结果异步更新到本地数据库。涉及JSON解析、PHP的simple_html_dom库抓取远程页面和Ajax交互技术。适合ThinkPHP开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文实例讲述了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扩展的还有很多功能。自己去了解吧。

返回的数据是一个字符串,再用正则表达式去筛选需要的数据就了 下面是效果图

e5c7fa3e026994ec63f95a8d96f05c75.png

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《smarty模板入门基础教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

时间: 2016-10-14

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值