PHP と phpSpider を使用して大量のデータをバッチでクロールする方法に関するヒントを共有します!
インターネットの急速な発展に伴い、大量のデータは情報化時代における最も重要なリソースの 1 つになりました。多くの Web サイトやアプリケーションにとって、このデータをクロールして取得することは重要です。この記事では、PHP および phpSpider ツールを使用して大量のデータのバッチ クロールを実現する方法を紹介し、開始に役立ついくつかのコード例を示します。
phpSpider のインストールと構成
まず、php とコンポーザーをインストールし、次にコンポーザーを介して phpSpider をインストールする必要があります。ターミナルを開いて次のコマンドを実行します:
composer require duskowl/php-spider
インストールが完了したら、プロジェクト ディレクトリで次のコマンドを使用して新しいクローラー スクリプトを生成できます:
vendor/bin/spider create mySpider
これにより、現在のディレクトリ内の新しいクローラー スクリプト mySpider.php というファイルで、クローラー ロジックを記述できます。
まず、クロールする開始 URL と抽出するデータ項目を定義する必要があります。 mySpider.php で、コンストラクター __construct() を見つけて、次のコードを追加します。
public function __construct() { $this->startUrls = [ 'http://example.com/page1', 'http://example.com/page2', 'http://example.com/page3', ]; $this->setField('title', 'xpath', '//h1'); // 抽取页面标题 $this->setField('content', 'xpath', '//div[@class="content"]'); // 抽取页面内容 }
startUrls 配列で、クロールする開始 URL を定義できます。これらの URL は、単一ページまたは複数ページのリストにすることができます。 setField() 関数を設定すると、抽出するデータ項目を定義でき、xpath または正規表現を使用してページ要素を見つけることができます。
次に、クロールされたデータを処理するコールバック関数を作成する必要があります。 handle() 関数を見つけて、次のコードを追加します。
public function handle($spider, $page) { $data = $page['data']; $url = $page['request']['url']; echo "URL: $url "; echo "Title: " . $data['title'] . " "; echo "Content: " . $data['content'] . " "; }
このコールバック関数では、$page 変数を使用して、クロールされたページ データを取得できます。 $data 配列には定義した抽出データ項目が含まれ、$url 変数には現在のページの URL が保存されます。この例では、データを端末に出力するだけですが、必要に応じてデータベースまたはファイルに保存できます。
クローラーの実行
クローラー ロジックを作成した後、ターミナルで次のコマンドを実行してクローラーを実行できます:
vendor/bin/spider run mySpider
これにより、クローラーが自動的に開始されます。ページを処理し、結果を端末に出力します。
5.1 同時クロール
大量のクロールが必要なシナリオでは、同時クロールの数を設定してクロールを高速化できます。 mySpider.php ファイルで、__construct() 関数を見つけて、次のコードを追加します。
function __construct() { $this->concurrency = 5; // 设置并发数 }
同時クロール リクエストの数を制御する同時実行数に同時実行変数を設定します。
5.2 スケジュールされたクロール
データを定期的にクロールする必要がある場合は、phpSpider が提供するスケジュールされたタスク機能を使用できます。まず、mySpider.php ファイルに startRequest() 関数を設定する必要があります。例:
public function startRequest() { $this->addRequest("http://example.com/page1"); $this->addRequest("http://example.com/page2"); $this->addRequest("http://example.com/page3"); }
次に、ターミナルで次のコマンドを実行して、クローラーを定期的に実行します:
chmod +x mySpider.php ./mySpider.php
これにより、クローラーはスケジュールされたタスクとして実行され、設定された間隔でクロールされます。
以上がPHP と phpSpider を使用して大量のデータをバッチでクロールする方法に関するヒントを共有します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。