Thinkphp5 und QueryList implementieren die Seitensammlungsfunktion (Crawler).

藏色散人
Freigeben: 2020-01-28 13:57:27
nach vorne
3891 Leute haben es durchsucht

Thinkphp5 und QueryList implementieren die Seitensammlungsfunktion (Crawler).

Was ist QueryList?

QueryList ist eine Reihe von PHP-Tools für die Inhaltserfassung, die eine modernere Methode verwenden Entwicklungsideen, einfache und elegante Syntax und starke Skalierbarkeit. Im Vergleich zur herkömmlichen Verwendung obskurer regulärer Ausdrücke für die Sammlung verwendet QueryList einen leistungsfähigeren und eleganteren CSS-Selektor für die Sammlung, wodurch der Schwellenwert für die PHP-Sammlung erheblich gesenkt wird und der Sammlungscode außerdem einfacher zu lesen und zu warten ist, sodass Sie sich davon verabschieden können zu undurchsichtigen und schwer zu wartenden regulären Ausdrücken.

Ein vollständiger Satz von Content-Collection-Lösungen, bereitgestellt von QueryList

● DOM-Inhaltsauswahl: CSS-Selektor

● HTTP-Client Terminal: GuzzleHTTP

● Inhaltsfilterung: CSS-Selektor

● Verstümmelte Zeichen lösen: Integrierte Lösungen für mehrere verstümmelte Codes

● Zusätzliche Funktionen: Umfangreiche Erweiterungs-Plug-Ins

Voraussetzungen

Das Projekt verwendet hauptsächlich das thinkphp5-Framework und verwendet hauptsächlich die beiden Dateien „QueryList.php“ und „phpQuery.php“. Wir können in das Projektverzeichnis wechseln, in „extend“ eine neue QL erstellen und dann den Composer-Befehl im QL-Verzeichnis ausführen, um QueryList:

composer require jaeger/querylist
Nach dem Login kopieren

zu installieren, und dann „use QLQueryList“ zum Controller hinzufügen, der verwendet werden muss. Schreiben Sie dann den Code in den Controller. Okay, das Folgende ist ein Beispiel

//需要采集的目标页面
$page = 'http://cms.querylist.cc/news/566.html';
//采集规则
$reg = array(
   //采集文章标题
   'title' => array('h1','text'),
   //采集文章发布日期,这里用到了QueryList的过滤功能,过滤掉span标签和a标签
   'date' => array('.pt_info','text','-span -a',function($content){
       //用回调函数进一步过滤出日期
       $arr = explode(' ',$content);
       return $arr[0];
   }),
   //采集文章正文内容,利用过滤功能去掉文章中的超链接,但保留超链接的文字,并去掉版权、JS代码等无用信息
   'content' => array('.post_content','html','a -.content_copyright -script',function($content){
       //利用回调函数下载文章中的图片并替换图片路径为本地路径
       //使用本例请确保当前目录下有image文件夹,并有写入权限
       //由于QueryList是基于phpQuery的,所以可以随时随地使用phpQuery,当然在这里也可以使用正则或者其它方式达到同样的目的

       $doc=\phpQuery::newDocumentHTML($content);
       $imgs = pq($doc)->find('img');
       foreach ($imgs as $img) {
           $src = 'http://cms.querylist.cc'.pq($img)->attr('src');
           $localSrc = md5($src).'.jpg';
           $stream = file_get_contents($src);
           file_put_contents($localSrc,$stream);
           pq($img)->attr('src',$localSrc);
       }
       return $doc->htmlOuter();
   })
);
$rang = '.content';
$ql = QueryList::Query($page,$reg,$rang);
$data = $ql->getData();
//打印结果
print_r($data);
Nach dem Login kopieren

Hinweis:

muss sein Wird vorne hinzugefügt, wenn die phpQuery-Klasse verwendet wird. Da der Namespace in phpQuery.php nicht verwendet wird, kann QueryList.php die phpQuery-Klasse nach Verwendung des Namespace nicht verwenden.

Weitere Informationen zu ThinkPHP finden Sie im ThinkPHP-Tutorial!

Das obige ist der detaillierte Inhalt vonThinkphp5 und QueryList implementieren die Seitensammlungsfunktion (Crawler).. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage