Scrapy は、インターネット上のデータを迅速かつ柔軟に取得できる強力な Python クローラー フレームワークです。実際のクローリングのプロセスでは、HTML、XML、JSON などのさまざまなデータ形式に遭遇することがよくあります。この記事では、Scrapyを使用してこれら3つのデータ形式をそれぞれクロールする方法を紹介します。
1. HTML データをクロールする
まず、Scrapy プロジェクトを作成する必要があります。コマンド ラインを開き、次のコマンドを入力します。
scrapy startproject myproject
このコマンドは、現在のフォルダーに myproject という Scrapy プロジェクトを作成します。
次に、開始 URL を設定する必要があります。 myproject/spiders ディレクトリで、spider.py という名前のファイルを作成し、そのファイルを編集して、次のコードを入力します。
import scrapy class MySpider(scrapy.Spider): name = 'myspider' start_urls = ['http://example.com'] def parse(self, response): pass
コードは、最初に Scrapy ライブラリをインポートし、次にクローラー クラス MySpider を定義し、 name は myspider のスパイダー名で、開始 URL を http://example.com に設定します。最後に、解析メソッドが定義されます。 parse メソッドは、応答データを処理するためにデフォルトで Scrapy によって呼び出されます。
次に、応答データを解析する必要があります。 myproject/spiders/spider.py ファイルの編集を続けて、次のコードを追加します。
import scrapy class MySpider(scrapy.Spider): name = 'myspider' start_urls = ['http://example.com'] def parse(self, response): title = response.xpath('//title/text()').get() yield {'title': title}
コードでは、response.xpath() メソッドを使用して HTML ページのタイトルを取得します。 yield を使用して、取得したタイトルを含む辞書型データを返します。
最後に、Scrapy クローラーを実行する必要があります。コマンド ラインに次のコマンドを入力します。
scrapy crawl myspider -o output.json
このコマンドは、データをoutput.jsonファイルに出力します。
2. XML データのクロール
同様に、最初に Scrapy プロジェクトを作成する必要があります。コマンド ラインを開き、次のコマンドを入力します。
scrapy startproject myproject
このコマンドは、現在のフォルダーに myproject という Scrapy プロジェクトを作成します。
myproject/spiders ディレクトリに、spider.py という名前のファイルを作成し、そのファイルを編集して、次のコードを入力します。
import scrapy class MySpider(scrapy.Spider): name = 'myspider' start_urls = ['http://example.com/xml'] def parse(self, response): pass
import scrapy class MySpider(scrapy.Spider): name = 'myspider' start_urls = ['http://example.com/xml'] def parse(self, response): for item in response.xpath('//item'): yield { 'title': item.xpath('title/text()').get(), 'link': item.xpath('link/text()').get(), 'desc': item.xpath('desc/text()').get(), }
scrapy crawl myspider -o output.json
scrapy startproject myproject
import scrapy class MySpider(scrapy.Spider): name = 'myspider' start_urls = ['http://example.com/json'] def parse(self, response): pass
コードでは、myspider という名前のスパイダー名を設定し、開始 URL を http://example.com/json に設定します。
応答データの解析import scrapy import json class MySpider(scrapy.Spider): name = 'myspider' start_urls = ['http://example.com/json'] def parse(self, response): data = json.loads(response.body) for item in data['items']: yield { 'title': item['title'], 'link': item['link'], 'desc': item['desc'], }
コード内では、json.loads()メソッドを使用してJSON形式のデータを解析します。 for ループを使用して items 配列を走査し、各アイテムの 3 つの属性 (title、link、desc) を取得し、yield を使用して辞書型データを返します。
クローラーの実行scrapy crawl myspider -o output.json
このコマンドは、データをoutput.jsonファイルに出力します。
4. 概要
この記事では、Scrapy を使用して HTML、XML、JSON データをそれぞれクロールする方法を紹介しました。上記の例を通して、Scrapy の基本的な使い方を理解していただくとともに、必要に応じてさらに高度な使い方を深く学ぶことができ、クローラ技術の活用に役立てていただければ幸いです。
以上がScrapy の詳細な使用法: HTML、XML、および JSON データをクロールする方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。