インターネットデータが急速に成長している時期に、ターゲットWebサイトのデータを効率的かつ安定にcraうとする方法は、開発者にとって一般的なニーズになりました。この記事では、PHP言語とオープンソースツールPhpspiderを使用して、効率的なバッチクローラーシステムを構築して、大規模なデータの自動収集を実現する方法を詳細に紹介します。
PHPSPiderは、PHPに基づく軽量クローラーフレームワークです。マルチスレッドの並行性をサポートし、ページのコンテンツ構造を自動的に認識し、URL管理やデータ抽出などの組み込み関数を備えています。これは、柔軟な制御とカスタムロジックが必要なPHP開発者にとって優れた選択です。
開始する前に、PHPと作曲家がローカルにインストールされていることを確認してください。次に、次のコマンドを介してphpspiderをインストールします。
composer require duskowl/php-spider
インストールが完了したら、ツールによって提供されたコマンドを使用して、初期スクリプトを生成できます。
vendor/bin/spider create mySpider
上記のコマンドを実行した後、 mySpider.phpファイルは現在のディレクトリで生成されます。次に、このファイルにクローラーロジックを書きます。
myspider.phpファイルを開き、コンストラクター__construct()を編集し、rawるのにURLとターゲットフィールドを構成します。
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が初期ページリストである場合、 SetFieldは抽出されるページフィールドを設定するために使用され、XPathまたは定期的なポジショニングをサポートします。
データスクレイピング後の処理ロジックは、ハンドル()メソッドに書き込む必要があります。データは、端末、データベース、またはその他のストレージメディアに出力できます。
public function handle($spider, $page)
{
$data = $page['data'];
$url = $page['request']['url'];
echo "URL: $url\n";
echo "Title: " . $data['title'] . "\n";
echo "Content: " . $data['content'] . "\n";
}
ロジックが完了したら、次のコマンドでスクリプトを実行してクロールを開始できます。
vendor/bin/spider run mySpider
このプログラムは、構成されたURLを自動的に通過し、データを収集し、プロセス出力を収集します。
パフォーマンスを改善したり、タイミングの取得のニーズを満たすために、PHPSPiderは柔軟な構成サポートを提供します。
function __construct()
{
$this->concurrency = 5; // 最大並行性番号をに設定します5
}
並行性数の設定は、データクローリングの効率を効果的に改善することができ、サーバーのパフォーマンスに応じて合理的に調整することをお勧めします。
public function startRequest()
{
$this->addRequest("http://example.com/page1");
$this->addRequest("http://example.com/page2");
$this->addRequest("http://example.com/page3");
}
システムタイミングタスク(CRON)と組み合わせて、クローラーは定期的に実行できます。
chmod +x mySpider.php
./mySpider.php
PHPSPiderフレームワークの助けを借りて、強力で安定した柔軟なPHP Crawlerプログラムを迅速に構築できます。 URL、フィールド、並行性、タイミングタスクメカニズムを合理的に構成することにより、大規模なデータの自動収集を効果的に実現し、データ分析とコンテンツマイニングに強力なサポートを提供します。
この記事で提供される実践的なスキルが、PHPクローラー開発の重要なポイントをすばやく習得できることを願っています。