QueryList とは何ですか?
QueryList はコンテンツ収集用の PHP ツールのセットで、より最新の開発アイデア、シンプルでエレガントな構文、強力な拡張性。コレクション用のあいまいな正規表現の従来の使用と比較して、QueryList はコレクション用により強力でエレガントな CSS セレクターを使用します。これにより、PHP コレクションのしきい値が大幅に低くなり、また、コレクション コードが読みやすく、保守しやすくなり、コレクションのコードに別れを告げることができます。わかりにくく保守が難しい正規表現を使用します。
QueryList はコンテンツ収集ソリューションの完全なセットを提供します
● DOM コンテンツ選択: CSS セレクター
● HTTP クライアント ターミナル: GuzzleHTTP
##● コンテンツ フィルタリング: CSS セレクター##● 文字化けの解決: 複数のコード化けソリューションを内蔵
##● 追加機能: 豊富な拡張プラグイン前提
プロジェクトでは主に thinkphp5 フレームワークを使用し、主に `QueryList.php` と `phpQuery.php` の 2 つのファイルを使用します。プロジェクト ディレクトリに切り替え、extend で新しい QL を作成し、QL ディレクトリでコンポーザー コマンドを実行して QueryList をインストールします。
composer require jaeger/querylist
//需要采集的目标页面 $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);
注:
\ で phpQuery クラスを使用する場合は、先頭に追加する必要があります。これは、phpQuery.php では名前空間が使用されていないためです。これは、名前空間を使用した後、QueryList.php で phpQuery クラスを使用できないためです。
関連する ThinkPHP の知識については、ThinkPHP チュートリアル
をご覧ください。以上がThinkphp5とQueryListはページ収集機能(クローラ)を実装していますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。