ホームページ >バックエンド開発 >Python チュートリアル >Scrapy を使用して効率的なクローラー プログラムを構築する方法
Scrapy を使用して効率的なクローラ プログラムを構築する方法
情報化時代の到来に伴い、インターネット上のデータ量は増加し続けており、大量のデータを取得する需要も増加しています。 。クローラーは、このニーズに対する最良のソリューションの 1 つとなっています。 Scrapy は優れた Python クローラー フレームワークとして、効率的で安定していて使いやすく、さまざまな分野で広く使用されています。この記事では、Scrapy を使用して効率的なクローラー プログラムを構築する方法とコード例を紹介します。
Scrapy のクローラ プログラムは主に次のコンポーネントで構成されます:
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 メソッドを書き直しました。
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 形式に変換してファイルに書き込みます。
クローラー プログラムとプロジェクト パイプラインの作成が完了したら、コマンド ラインで次のコマンドを実行してクローラー プログラムを実行できます。
scrapy crawl example
これにより、「example」という名前のクローラーが起動され、データのクロールが開始されます。クロールされたデータは、パイプライン クラスで定義したとおりに処理されます。
上記は、Scrapy を使用して効率的なクローラ プログラムを構築するための基本的なプロセスとサンプル コードです。もちろん、Scrapy は、特定のニーズに応じて調整および拡張できる他の多くの機能やオプションも提供します。この記事が、読者が Scrapy をよりよく理解して使用し、効率的なクローラー プログラムを構築するのに役立つことを願っています。
以上がScrapy を使用して効率的なクローラー プログラムを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。