Heim > Artikel > Backend-Entwicklung > Eine kurze Analyse der Verwendung von PHP zum asynchronen Crawlen von Daten
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.
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('#head')->append('<div>追加内容</div>')->find('div')->htmls(); $ql->find('.two')->children('img')->attrs('alt'); //获取class为two元素下的所有img孩子节点 //遍历class为two元素下的所有孩子节点 $data = $ql->find('.two')->children()->map(function ($item){ //用is判断节点类型 if($item->is('a')){ return $item->text(); }elseif($item->is('img')) { return $item->alt; } }); $ql->find('a')->attr('href', 'newVal')->removeClass('className')->html('newHtml')->... $ql->find('div > p')->add('div > ul')->filter(':has(a)')->find('p:first')->nextAll()->andSelf()->... $ql->find('div.old')->replaceWith( $ql->find('div.new')->clone())->appendTo('.trash')->prepend('Deleted')->...Plug-in-Verwendung Verwenden Sie das CURL-Multithread-Plug-in, Multithread-Sammlung GitHub-Ranking:
$data = QueryList::get('http://www.baidu.com/s?wd=QueryList') // 设置采集规则 ->rules([ 'title'=>array('h3','text'), 'link'=>array('h3>a','href') ]) ->query()->getData(); print_r($data->all());Für Weitere Details finden Sie auf GitHub: https://github.com /jae-jae/QueryListEmpfohlenes 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!