Heim  >  Artikel  >  Backend-Entwicklung  >  jquery+thinkphp implementiert eine domänenübergreifende Daten-Crawling-Methode

jquery+thinkphp implementiert eine domänenübergreifende Daten-Crawling-Methode

高洛峰
高洛峰Original
2017-01-11 11:09:401369Durchsuche

Das Beispiel in diesem Artikel beschreibt die Methode von jquery+thinkphp, um eine domänenübergreifende Datenerfassung zu erreichen. Ich möchte es Ihnen als Referenz mitteilen:

Heute werde ich eine Remote-Datenerfassungsfunktion erstellen. Denken Sie daran, dass JQuery zur Remote-Erfassung von Daten mit Ajax verwendet werden kann, dies jedoch nicht domänenübergreifend. Ich habe viel online gefunden. Aber ich denke, es ist besser, eine umfassende Lösung zu erstellen, und jetzt habe ich das Gefühl, dass dadurch ein einfaches Problem verkompliziert, aber zumindest vorerst gelöst wurde:

Die Auswirkung der domänenübergreifenden Erfassung von Daten auf die lokale Ebene Datenbank und aktualisiere sie dann asynchron

Die Art und Weise, wie ich es umsetze: $.post von jquery sendet Daten an den Serverhintergrund, und der PHP-Code im Hintergrund führt einen Remoteabruf durch, speichert sie in der Datenbank und gibt die Daten zurück an die Rezeption über Ajax. Die Rezeption verwendet JS, um die Daten zu akzeptieren und anzuzeigen.

//远程抓取获取数据
 $("#update_ac").click(function() {
      $username = $("#username").text();
      $("#AC,#rank,#Submit,#solved,#solved2,#solved3").ajaxStart(function(){
        $(this).html("<span class=&#39;loading2&#39;>   </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";
});

Der obige JQuery-Code ist im vierten Stock relativ klar. Was mich stört, ist der Empfang von JSON-Daten

json = eval("(" + $data + ")");
//eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

Tatsächlich erfolgt das domänenübergreifende Crawlen mit der PHP-Erweiterung simple_html_dom (wenn Sie sich nicht sicher sind, können Sie online suchen, es wurde auf Basis von PHP5 entwickelt)

Crawlen von Remote-Seiten zu lokal .

import("@.ORG.simple_html_dom");
//thinkphp内导入扩展,你要把网上下载的代码改名为simple_html_dom.class.php放到APPNAME\Lib\ORG的目录下面
$html = file_get_html(&#39;http://openoj.awaysoft.com/JudgeOnline/userinfo.php?user=&#39;.$username); //远程抓取了
$ret = $html->find(&#39;center&#39;,0)->plaintext; //返回数据了。

Der obige Code ist nur der Kerncode, simple_html_dom verfügt über viele erweiterte Funktionen. Finden Sie es selbst heraus.

Die zurückgegebenen Daten sind eine Zeichenfolge. Anschließend werden reguläre Ausdrücke verwendet, um die erforderlichen Daten zu filtern.

jquery+thinkphp implementiert eine domänenübergreifende Daten-Crawling-Methode

Ich hoffe, dieser Artikel hilft Die PHP-Programmierung, die auf dem ThinkPHP-Framework basiert, ist für jeden hilfreich.

Weitere Artikel darüber, wie jquery+thinkphp die domänenübergreifende Datenerfassung implementiert, finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn