ホームページ >バックエンド開発 >Python チュートリアル >Scrapy を使用して効率的なクローラー プログラムを構築する方法

Scrapy を使用して効率的なクローラー プログラムを構築する方法

WBOY
WBOYオリジナル
2023-08-02 14:33:13718ブラウズ

Scrapy を使用して効率的なクローラ プログラムを構築する方法

情報化時代の到来に伴い、インターネット上のデータ量は増加し続けており、大量のデータを取得する需要も増加しています。 。クローラーは、このニーズに対する最良のソリューションの 1 つとなっています。 Scrapy は優れた Python クローラー フレームワークとして、効率的で安定していて使いやすく、さまざまな分野で広く使用されています。この記事では、Scrapy を使用して効率的なクローラー プログラムを構築する方法とコード例を紹介します。

  1. クローラ プログラムの基本構造

Scrapy のクローラ プログラムは主に次のコンポーネントで構成されます:

  • クローラ プログラム: 定義方法ページのクロール、ページからのデータの解析、リンクの追跡など。
  • プロジェクト パイプライン: クローラー プログラムによってページから抽出されたデータを処理し、データベースへの保存やファイルへのエクスポートなどの後続の処理を実行します。
  • ダウンローダー ミドルウェア: リクエストの送信処理とページ コンテンツの取得を担当し、ユーザー エージェントの設定やプロキシ IP の切り替えなどの操作を実行できます。
  • スケジューラ: 取得するすべてのリクエストを管理し、特定の戦略に従ってそれらのリクエストをスケジュールする責任を負います。
  • ダウンローダー: 要求されたページ コンテンツをダウンロードし、それをクローラー プログラムに返す役割を果たします。
  1. クローラ プログラムの作成

Scrapy では、クローラ プログラムを作成するために新しいクローラ プロジェクトを作成する必要があります。コマンド ラインで次のコマンドを実行します。

scrapy startproject myspider

これにより、「myspider」という名前のプロジェクト フォルダーが作成され、いくつかのデフォルトのファイルとフォルダーが含まれます。フォルダーに入り、新しいクローラーを作成できます。

cd myspider
scrapy genspider example example.com

これにより、「example.com」Web サイトからデータをクロールする「example」という名前のクローラーが作成されます。生成された「example_spider.py」ファイルに特定のクローラー ロジックを記述することができます。

ここでは、Web サイト上のニュースの見出しとリンクをクロールする簡単な例を示します。

import scrapy

class ExampleSpider(scrapy.Spider):
    name = 'example'
    allowed_domains = ['example.com']
    start_urls = ['http://www.example.com/news']

    def parse(self, response):
        for news in response.xpath('//div[@class="news-item"]'):
            yield {
                'title': news.xpath('.//h2/text()').get(),
                'link': news.xpath('.//a/@href').get(),
            }
        next_page = response.xpath('//a[@class="next-page"]/@href').get()
        if next_page:
            yield response.follow(next_page, self.parse)

上記のコードでは、「ExampleSpider」という名前のクローラー クラスを定義します。これには 3 つの属性が含まれています。name はクローラーの名前を表し、allowed_domains は Web サイトのクロールを許可されているドメイン名を表し、start_urlsは開始点の URL を表します。次に、Web ページのコンテンツを解析し、ニュースのタイトルとリンクを抽出し、yield を使用して結果を返す parse メソッドを書き直しました。

  1. プロジェクト パイプラインの構成

Scrapy では、クロールされたデータをプロジェクト パイプラインを通じてパイプライン処理できます。データはデータベースに保存したり、ファイルに書き込んだり、後で処理したりできます。

プロジェクト フォルダー内の「settings.py」ファイルを開き、その中にある ITEM_PIPELINES 構成アイテムを見つけて、コメントを解除します。次に、次のコードを追加します。

ITEM_PIPELINES = {
    'myspider.pipelines.MyPipeline': 300,
}

これにより、カスタム パイプライン クラス「my Spider.pipelines.MyPipeline」が有効になり、優先順位が指定されます (数値が小さいほど優先順位が高くなります)。

次に、データを処理するパイプライン クラスを作成する必要があります。プロジェクト フォルダーに「pipelines.py」という名前のファイルを作成し、次のコードを追加します。

import json

class MyPipeline:

    def open_spider(self, spider):
        self.file = open('news.json', 'w')

    def close_spider(self, spider):
        self.file.close()

    def process_item(self, item, spider):
        line = json.dumps(dict(item)) + "
"
        self.file.write(line)
        return item

この例では、open_spider、close_spider、process_item の 3 つのメソッドを含む「MyPipeline」という名前のパイプライン クラスを定義します。 open_spider メソッドでは、データを保存するファイルを開きます。 close_spider メソッドでは、ファイルを閉じます。 process_item メソッドでは、データを JSON 形式に変換してファイルに書き込みます。

  1. クローラー プログラムの実行

クローラー プログラムとプロジェクト パイプラインの作成が完了したら、コマンド ラインで次のコマンドを実行してクローラー プログラムを実行できます。

scrapy crawl example

これにより、「example」という名前のクローラーが起動され、データのクロールが開始されます。クロールされたデータは、パイプライン クラスで定義したとおりに処理されます。

上記は、Scrapy を使用して効率的なクローラ プログラムを構築するための基本的なプロセスとサンプル コードです。もちろん、Scrapy は、特定のニーズに応じて調整および拡張できる他の多くの機能やオプションも提供します。この記事が、読者が Scrapy をよりよく理解して使用し、効率的なクローラー プログラムを構築するのに役立つことを願っています。

以上がScrapy を使用して効率的なクローラー プログラムを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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