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
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);
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!