ホームページ >バックエンド開発 >Python チュートリアル >Scrapy の詳細な使用法: HTML、XML、および JSON データをクロールする方法?

Scrapy の詳細な使用法: HTML、XML、および JSON データをクロールする方法?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2023-06-22 17:58:401964ブラウズ

Scrapy は、インターネット上のデータを迅速かつ柔軟に取得できる強力な Python クローラー フレームワークです。実際のクローリングのプロセスでは、HTML、XML、JSON などのさまざまなデータ形式に遭遇することがよくあります。この記事では、Scrapyを使用してこれら3つのデータ形式をそれぞれクロールする方法を紹介します。

1. HTML データをクロールする

  1. Scrapy プロジェクトを作成する

まず、Scrapy プロジェクトを作成する必要があります。コマンド ラインを開き、次のコマンドを入力します。

scrapy startproject myproject

このコマンドは、現在のフォルダーに myproject という Scrapy プロジェクトを作成します。

  1. 開始 URL の設定

次に、開始 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 によって呼び出されます。

  1. 応答データを解析する

次に、応答データを解析する必要があります。 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 を使用して、取得したタイトルを含む辞書型データを返します。

  1. クローラーの実行

最後に、Scrapy クローラーを実行する必要があります。コマンド ラインに次のコマンドを入力します。

scrapy crawl myspider -o output.json

このコマンドは、データをoutput.jsonファイルに出力します。

2. XML データのクロール

  1. Scrapy プロジェクトの作成

同様に、最初に Scrapy プロジェクトを作成する必要があります。コマンド ラインを開き、次のコマンドを入力します。

scrapy startproject myproject

このコマンドは、現在のフォルダーに myproject という Scrapy プロジェクトを作成します。

  1. 開始 URL の設定

myproject/spiders ディレクトリに、spider.py という名前のファイルを作成し、そのファイルを編集して、次のコードを入力します。

import scrapy

class MySpider(scrapy.Spider):
    name = 'myspider'
    start_urls = ['http://example.com/xml']

    def parse(self, response):
        pass

コードでは、myspider という名前のスパイダー名を設定し、開始 URL を http://example.com/xml に設定します。

    応答データの解析
myproject/spiders/spider.py ファイルの編集を続けて、次のコードを追加します。

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(),
            }

コード内では、response.xpath() メソッドを使用して XML ページ内のデータを取得します。 for ループを使用して item タグを走査し、title、link、desc タグのテキスト データを取得し、yield を使用して辞書型データを返します。

    クローラーの実行
最後に、Scrapy クローラーも実行する必要があります。コマンド ラインに次のコマンドを入力します。

scrapy crawl myspider -o output.json

このコマンドは、データをoutput.jsonファイルに出力します。

3. JSON データをクロールする

    Scrapy プロジェクトを作成する
同様に、Scrapy プロジェクトを作成する必要があります。コマンド ラインを開き、次のコマンドを入力します。

scrapy startproject myproject

このコマンドは、現在のフォルダーに myproject という Scrapy プロジェクトを作成します。

    開始 URL の設定
myproject/spiders ディレクトリに、spider.py という名前のファイルを作成し、そのファイルを編集して、次のコードを入力します。
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 に設定します。

応答データの解析
  1. myproject/spiders/spider.py ファイルの編集を続けて、次のコードを追加します。
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 を使用して辞書型データを返します。

クローラーの実行
  1. 最後に、Scrapy クローラーも実行する必要があります。コマンド ラインに次のコマンドを入力します。
scrapy crawl myspider -o output.json

このコマンドは、データをoutput.jsonファイルに出力します。

4. 概要

この記事では、Scrapy を使用して HTML、XML、JSON データをそれぞれクロールする方法を紹介しました。上記の例を通して、Scrapy の基本的な使い方を理解していただくとともに、必要に応じてさらに高度な使い方を深く学ぶことができ、クローラ技術の活用に役立てていただければ幸いです。

以上がScrapy の詳細な使用法: HTML、XML、および JSON データをクロールする方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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