您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何在thinkphp中使用實現一個跨域抓取數據功能,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
實現方式: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中使用實現一個跨域抓取數據功能,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。