PHP と phpSpider を使用して大量のデータをバッチでクロールする方法に関するヒントを共有します。

王林
リリース: 2023-07-22 18:20:02
オリジナル
829 人が閲覧しました

PHP と phpSpider を使用して大量のデータをバッチでクロールする方法に関するヒントを共有します!

インターネットの急速な発展に伴い、大量のデータは情報化時代における最も重要なリソースの 1 つになりました。多くの Web サイトやアプリケーションにとって、このデータをクロールして取得することは重要です。この記事では、PHP および phpSpider ツールを使用して大量のデータのバッチ クロールを実現する方法を紹介し、開始に役立ついくつかのコード例を示します。

  1. はじめに
    phpSpider は、PHP をベースにしたオープンソース クローラー ツールです。使いやすく強力で、Web サイト上のデータを迅速かつ効率的にクロールするのに役立ちます。 phpSpider に基づいて、独自のスクリプトを記述してバッチ クロールを実装できます。
  2. phpSpider のインストールと構成
    まず、php とコンポーザーをインストールし、次にコンポーザーを介して phpSpider をインストールする必要があります。ターミナルを開いて次のコマンドを実行します:

    composer require duskowl/php-spider
    ログイン後にコピー

    インストールが完了したら、プロジェクト ディレクトリで次のコマンドを使用して新しいクローラー スクリプトを生成できます:

    vendor/bin/spider create mySpider
    ログイン後にコピー

    これにより、現在のディレクトリ内の新しいクローラー スクリプト mySpider.php というファイルで、クローラー ロジックを記述できます。

  3. クローラー ロジックの作成
    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 が保存されます。この例では、データを端末に出力するだけですが、必要に応じてデータベースまたはファイルに保存できます。

  1. クローラーの実行
    クローラー ロジックを作成した後、ターミナルで次のコマンドを実行してクローラーを実行できます:

    vendor/bin/spider run mySpider
    ログイン後にコピー

    これにより、クローラーが自動的に開始されます。ページを処理し、結果を端末に出力します。

  2. より高度なテクニック
    上で紹介した基本的な機能に加えて、phpSpider は、大量のデータをクロールする必要性にうまく対処するのに役立つ他の多くの便利な機能も提供します。以下にいくつかの高度なテクニックを示します。

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

これにより、クローラーはスケジュールされたタスクとして実行され、設定された間隔でクロールされます。

  1. 概要
    phpSpider で独自のクローラー スクリプトを記述することで、大量のデータをバッチでクロールする必要性を実現できます。この記事では、phpSpider のインストールと構成、およびクローラー ロジックを作成するための基本手順を紹介し、開始に役立ついくつかのコード例を示します。同時に、大量のデータをクロールする必要性にうまく対処できるようにするための高度なテクニックもいくつか共有しました。これらのヒントがお役に立てば幸いです。

以上がPHP と phpSpider を使用して大量のデータをバッチでクロールする方法に関するヒントを共有します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート