ホームページ PHPフレームワーク ThinkPHP Thinkphp5とQueryListはページ収集機能(クローラ)を実装しています

Thinkphp5とQueryListはページ収集機能(クローラ)を実装しています

Jan 28, 2020 pm 01:57 PM
querylist thinkphp5

Thinkphp5とQueryListはページ収集機能(クローラ)を実装しています

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
ログイン後にコピー

次に、使用する必要があるコントローラーに use QL\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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Pagoda に thinkphp5 をデプロイするときにエラーが発生した場合はどうすればよいですか? Pagoda に thinkphp5 をデプロイするときにエラーが発生した場合はどうすればよいですか? Dec 19, 2022 am 11:04 AM

Pagoda に thinkphp5 をデプロイするときに報告されたエラーの解決策: 1. Pagoda サーバーを開き、php pathinfo 拡張機能をインストールして有効にします; 2. 「.access」ファイルをコンテンツ「RewriteRule ^(.*)$index.php」で構成します。 ?s=/$1 [QSA ,PT,L]”; 3. Web サイト管理で、thinkphp の疑似静的機能を有効にするだけです。

thinkphp5 の URL 書き換えが失敗した場合はどうすればよいですか? thinkphp5 の URL 書き換えが失敗した場合はどうすればよいですか? Dec 12, 2022 am 09:31 AM

thinkphp5 の URL 書き換えが機能しない場合の解決策: 1. mod_rewrite.so モジュールが httpd.conf 設定ファイルにロードされているかどうかを確認します; 2.AllowOverride None の None を All に変更します; 3. Apache 設定ファイル .htaccess を「RewriteRule ^」に変更します(.*)$index.php [L,E=PATH_INFO:$1]」を選択して保存します。

thinkphp5でリクエストされたURLを取得する方法 thinkphp5でリクエストされたURLを取得する方法 Dec 20, 2022 am 09:48 AM

thinkphp5 が要求された URL を取得するためのメソッド: 1. "\think\Request" クラスの "$request = Request::instance();" メソッドを使用して、現在の URL 情報を取得します。 2. 組み込みヘルパーを使用します。関数「$request-> url()」を使用して、ドメイン名を含む完全な URL アドレスを取得します。

thinkphp5のタイトルバーアイコンを削除する方法 thinkphp5のタイトルバーアイコンを削除する方法 Dec 20, 2022 am 09:24 AM

thinkphp5 タイトル バー アイコンを削除する方法: 1. thinkphp5 フレームワーク public で favicon.ico ファイルを見つけます; 2. ファイルを削除するか、別の画像を選択して名前を favicon.ico に変更し、元の favicon.ico ファイルを置き換えます。

thinkphp5 post が値を取得できない場合はどうすればよいですか? thinkphp5 post が値を取得できない場合はどうすればよいですか? Dec 06, 2022 am 09:29 AM

TP5 が strpos 関数を使用してヘッダーの content-type 値で app/json 文字列を検索するため、thinkphp5 post は値を取得できません。解決策は、ヘッダーの content-type 値を app/json に設定することです。

thinkphp5 がコントローラーが存在しないというメッセージを表示した場合はどうすればよいですか? thinkphp5 がコントローラーが存在しないというメッセージを表示した場合はどうすればよいですか? Dec 06, 2022 am 10:43 AM

thinkphp5 でコントローラーが存在しないというプロンプトが表示される場合の解決策: 1. 対応するコントローラーの名前空間が正しく記述されているかどうかを確認し、正しい名前空間に変更します; 2. 対応する tp ファイルを開いてクラス名を変更します。

ThinkPHP5 で昨日のデータをクエリする方法 ThinkPHP5 で昨日のデータをクエリする方法 Dec 05, 2022 am 09:20 AM

ThinkPHP5 で昨日のデータをクエリする方法: 1. ThinkPHP5 関連ファイルを開きます; 2. 式「db('table')->whereTime('c_time', 'yesterday')->select();」を使用して昨日のデータをクエリします。 。

thinkphp5 でエラー プロンプトを設定する方法 thinkphp5 でエラー プロンプトを設定する方法 Dec 07, 2022 am 10:31 AM

thinkphp5 でエラー プロンプトを設定する方法: 1. プロジェクト ルート ディレクトリのパブリック フォルダーに入り、index.php エントリ ファイルを開きます; 2. デバッグ モード スイッチに関するコメントを表示します; 3. 「APP_DEBUG」定数の値を調整しますtrue に設定すると、エラー メッセージ プロンプトが表示されます。

See all articles