Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Analyse der Verwendung von PHP zum asynchronen Crawlen von Daten

Eine kurze Analyse der Verwendung von PHP zum asynchronen Crawlen von Daten

青灯夜游
青灯夜游nach vorne
2023-01-12 20:02:333777Durchsuche

Apropos Crawler: Viele Leute werden an Python-Crawler denken, weil sie große Vorteile haben. Tatsächlich kann PHP jedoch auch zum asynchronen Crawlen von Daten verwendet werden. Lassen Sie mich Ihnen vorstellen, wie Sie PHP zum asynchronen Crawlen von Daten verwenden.

Eine kurze Analyse der Verwendung von PHP zum asynchronen Crawlen von Daten

Was ist ein Webcrawler?

Ein Webcrawler ist ein Programm, das automatisch Webseiten aus dem World Wide Web für Suchmaschinen herunterlädt und ein wichtiger Bestandteil von Suchmaschinen ist. Der herkömmliche Crawler beginnt mit der URL einer oder mehrerer anfänglicher Webseiten und ruft die URL auf der ursprünglichen Webseite ab. Während des Crawlens der Webseite extrahiert er kontinuierlich neue URLs von der aktuellen Seite und stellt sie in die Warteschlange, bis sie sicher sind Stoppbedingungen des Systems erfüllt sind.

Wofür werden Raupen verwendet?

  • Fungiert als universeller Suchmaschinen-Webseitensammler. (Google, Baidu)

  • Erstellen Sie eine vertikale Suchmaschine

  • Wissenschaftliche Forschung: Online-Menschenverhalten, Online-Community-Evolution, Forschung zur menschlichen Dynamik, ökonometrische Soziologie, komplexe Netzwerke, Data Mining und andere Bereiche der empirischen Forschung erfordern große Datenmengen und Webcrawler sind ein leistungsstarkes Werkzeug zum Sammeln relevanter Daten.

  • Peeping, Hacking, Spam versenden...

QueryList Einführung und Funktionen

QueryList ist eine Reihe einfacher, eleganter und skalierbarer PHP-Sammlungstools (Crawler), die auf phpQuery basieren.

Eigenschaften:

  • Hat genau den gleichen CSS3-DOM-Selektor wie jQuery

  • Hat genau die gleiche DOM-Operations-API wie jQuery

  • Hat eine universelle Listensammlungslösung

  • Verfügt über ein leistungsstarkes HTTP-Request-Kit, Implementieren Sie problemlos komplexe Netzwerkanforderungen wie simulierte Anmeldung, gefälschter Browser, HTTP-Proxy usw.

  • hat eine verstümmelte Lösung

  • verfügt über eine leistungsstarke Inhaltsfilterfunktion, Sie können den jQuey-Selektor zum Filtern von Inhalten verwenden

  • Hat ein hochmodulares Design und eine starke Skalierbarkeit

  • Verfügt über eine ausdrucksstarke API

  • Verfügt über eine hochwertige Dokumentation

  • Verfügt über eine Fülle von Plug-Ins

  • Verfügt über eine professionelle Q&A-Community und Kommunikationsgruppe

Durch Plug-Ins können Sie ganz einfach Dinge erreichen wie:

  • Multi-Thread-Sammlung

  • Bildlokalisierung

  • Simulieren des Browserverhaltens, wie zum Beispiel: Senden eines Formulars

  • Webcrawler

Umweltanforderungen

PHP >= 7.0

Wenn Ihre PHP-Version immer noch bei PHP5 hängen bleibt oder Sie nicht wissen, wie Sie Composer verwenden, können Sie QueryList3 verwenden, das PHP5.3 und unterstützt manuelle Installation. QueryList3-Dokument: http://v3.querylist.cc Sammeln Sie Baidu-Suchergebnisse

Tragen Cookies Melden Sie sich bei Sina Weibo an.

composer require jaeger/querylist
HTTP-Proxy verwenden.

QueryList::get('http://www.nipic.com')->find('img')->attrs('src');
myHttp-Methode:

$ql = QueryList::get('http://www.baidu.com/s?wd=QueryList');

$ql->find('title')->text(); // 获取网站标题
$ql->find('meta[name=keywords]')->content; // 获取网站头部关键词

$ql->find('h3>a')->texts(); //获取搜索结果标题列表
$ql->find('h3>a')->attrs('href'); //获取搜索结果链接列表

$ql->find('img')->src; //获取第一张图片的链接地址
$ql->find('img:eq(1)')->src; //获取第二张图片的链接地址
$ql->find('img')->eq(2)->src; //获取第三张图片的链接地址
// 遍历所有图片
$ql->find('img')->map(function($img){
    echo $img->alt;  //打印图片的alt属性
});

oder put Der Implementierungskörper wird in eine Klasse gekapselt und dann wie folgt gebunden:

$ql->find(&#39;#head&#39;)->append(&#39;<div>追加内容</div>&#39;)->find(&#39;div&#39;)->htmls();
$ql->find(&#39;.two&#39;)->children(&#39;img&#39;)->attrs(&#39;alt&#39;); //获取class为two元素下的所有img孩子节点
//遍历class为two元素下的所有孩子节点
$data = $ql->find(&#39;.two&#39;)->children()->map(function ($item){
    //用is判断节点类型
    if($item->is(&#39;a&#39;)){
        return $item->text();
    }elseif($item->is(&#39;img&#39;))
    {
        return $item->alt;
    }
});

$ql->find(&#39;a&#39;)->attr(&#39;href&#39;, &#39;newVal&#39;)->removeClass(&#39;className&#39;)->html(&#39;newHtml&#39;)->...
$ql->find(&#39;div > p&#39;)->add(&#39;div > ul&#39;)->filter(&#39;:has(a)&#39;)->find(&#39;p:first&#39;)->nextAll()->andSelf()->...
$ql->find(&#39;div.old&#39;)->replaceWith( $ql->find(&#39;div.new&#39;)->clone())->appendTo(&#39;.trash&#39;)->prepend(&#39;Deleted&#39;)->...
Plug-in-Verwendung

Verwenden Sie das CURL-Multithread-Plug-in, Multithread-Sammlung GitHub-Ranking:

$data = QueryList::get(&#39;http://www.baidu.com/s?wd=QueryList&#39;)
    // 设置采集规则
    ->rules([ 
        &#39;title&#39;=>array(&#39;h3&#39;,&#39;text&#39;),
        &#39;link&#39;=>array(&#39;h3>a&#39;,&#39;href&#39;)
    ])
    ->query()->getData();

print_r($data->all());

Für Weitere Details finden Sie auf GitHub: https://github.com /jae-jae/QueryList

Empfohlenes Lernen: „

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonEine kurze Analyse der Verwendung von PHP zum asynchronen Crawlen von Daten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:PHP自学中心. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen