ホームページ バックエンド開発 Python チュートリアル Scrapy は、クローラー テンプレートが付属するデータ スクレイピング アプリケーションです。

Scrapy は、クローラー テンプレートが付属するデータ スクレイピング アプリケーションです。

Jun 22, 2023 am 09:24 AM
爬虫類 データスクレイピング scrapy

インターネット技術の継続的な発展に伴い、クローラー技術も広く使用されるようになりました。クローラー テクノロジーは、インターネット上のデータを自動的にクロールしてデータベースに保存することができ、データ分析やデータ マイニングに便利です。 Python の非常に有名なクローラー フレームワークである Scrapy には、ターゲット Web サイト上のデータを迅速にクロールし、ローカルまたはクラウド データベースに自動的に保存できるいくつかの一般的なクローラー テンプレートが付属しています。この記事では、Scrapy 独自のクローラー テンプレートを使用してデータをクロールする方法と、クロール プロセス中にデータをクリーニング、解析、保存する方法を紹介します。

1. Scrapy クローラー テンプレートの概要

Scrapy には、基本的な Spider テンプレート、CrawlSpider テンプレート、XmlFeedSpider テンプレートなど、いくつかのクローラー テンプレートが付属しています。 Spider テンプレートは最も基本的なクローラ テンプレートであり、応用範囲が広く、使いやすいことが利点です。 CrawlSpider テンプレートは、マルチレベル リンクを迅速にクロールでき、カスタム ルールをサポートするルールベースのクローラー テンプレートです。 XmlFeedSpider テンプレートは、XML 形式に適したクローラ テンプレートです。データ クローリングにこれらのテンプレートを使用すると、プログラマーの開発の難易度が大幅に軽減され、クローリングの効率が向上します。

2. Scrapy クローラー テンプレート アプリケーション

以下は、Scrapy 独自の Spider テンプレートを使用してデータをクロールする方法を示す実践的な例です。クローリング対象の Web サイトは映画情報サイトであり、Web サイトのトップページに最新の映画情報が掲載されています。この Web サイトから映画の名前、監督、俳優、評価、その他の情報をクロールし、ローカル データベースに保存する必要があります。

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

まず、コマンド ライン ウィンドウを開き、ターゲットの作業ディレクトリに切り替えて、次のコマンドを入力する必要があります:

scrapy startproject movies
ログイン後にコピー

このコマンド Movies という名前の Scrapy プロジェクトが作成されます。プロジェクト ディレクトリには、クローラー プログラムを配置するために使用される Spiders という名前のサブディレクトリが含まれます。

  1. スパイダー テンプレートの作成

プロジェクト ディレクトリで、次のコマンドを使用して movie_spider という名前のスパイダーを作成します。

scrapy genspider movie_spider www.movies.com
ログイン後にコピー

このコマンドは、 Spider テンプレートに基づくプログラム。www.movi​​es.com はターゲット Web サイトのドメイン名を表します。 Spiders ディレクトリに、次の内容を含む movie_spider.py という名前のファイルが表示されます。

import scrapy

class MovieSpider(scrapy.Spider):
    name = 'movie_spider'
    allowed_domains = ['www.movies.com']
    start_urls = ['http://www.movies.com/']

    def parse(self, response):
        pass
ログイン後にコピー

これは、最も基本的な Spider プログラムです。このうち、name はクローラーの名前を表し、allowed_domains はクロールを許可するドメイン名のリストを表し、start_urls はクロールを開始する URL のリストを表します。 parse メソッドでは、データの解析と取得のためのコードを記述する必要があります。

  1. データのキャプチャと分析

応答オブジェクトからターゲット Web サイトのデータをキャプチャして解析するコードを記述する必要があります。先ほど述べた映画情報 Web サイトの場合、XPath または CSS セレクターを使用してページ上の要素を見つけることができます。ムービー名がページ上のクラス movie-name を持つ div 要素に格納されていると仮定すると、次のコードを使用してすべてのムービー名を抽出できます:

def parse(self, response):
    movies = response.xpath('//div[@class="movie-name"]/text()').extract()
    for movie in movies:
        yield {'name': movie}
ログイン後にコピー

ここでは、XPath 構文を使用してすべての div を見つけます。クラス movie-name の要素が使用され、extract メソッドを使用して要素内のテキスト コンテンツが抽出されます。次に、for ループを使用して、ジェネレーターの出力として各ムービー名を生成します。

同様に、XPath または CSS セレクターを使用して、関心のある他の要素を見つけることができます。たとえば、監督と俳優の情報はクラス ディレクターの div 要素に格納され、評価情報はクラス レートの div 要素に格納されます。

  1. データ ストレージ

Spider プログラムでは、キャプチャしたデータをローカルまたはクラウド データベースに保存するコードを記述する必要があります。 Scrapy は、MySQL、PostgreSQL、MongoDB など、さまざまなデータベースへのデータの保存をサポートしています。

たとえば、MySQL データベースを使用して映画情報を保存できます。 Spiders ディレクトリに、次のコードを含む mysql_pipeline.py という名前のファイルを作成できます。

import pymysql

class MysqlPipeline(object):
    def __init__(self):
        self.conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='movie_db', charset='utf8')

    def process_item(self, item, spider):
        cursor = self.conn.cursor()
        sql = "INSERT INTO movie(name, director, actors, rate) VALUES(%s, %s, %s, %s)"
        cursor.execute(sql, (item['name'], item['director'], item['actors'], item['rate']))
        self.conn.commit()

    def __del__(self):
        self.conn.close()
ログイン後にコピー

このプログラムは、実装データを MySQL データベースに保存します。ここで、movie_db はデータベース名であり、ムービーテーブルには名前、監督、俳優、評価の 4 つのフィールドが含まれ、映画名、監督、俳優、評価情報を保存します。 process_item メソッドは、Spider プログラムで生成された項目をデータベースに保存するために使用されます。

mysql_pipeline.py ファイルを使用するには、次の設定を settings.py ファイルに追加する必要もあります:

ITEM_PIPELINES = {
    'movies.spiders.mysql_pipeline.MysqlPipeline': 300
}
ログイン後にコピー

ここで、「movies.spiders.mysql_pipeline.MysqlPipeline」は次のように指定します。 mysql_pipeline.py ファイルの場所とクラス名。 300という数字はデータ処理の優先度を示しており、数字が小さいほど優先度が高くなります。

  1. Scrapy プログラムの実行

Spiders ディレクトリで次のコマンドを実行して Scrapy プログラムを実行します:

scrapy crawl movie_spider
ログイン後にコピー

このコマンドは movie_spider を開始します。クローラー プログラムはターゲット Web サイトのデータのクロールを開始し、それを MySQL データベースに保存します。

3. 概要

この記事では、Spider テンプレート、CrawlSpider テンプレート、XmlFeedSpider テンプレートなど、Scrapy 独自のクローラー テンプレートを使用してデータをクロールする方法を紹介します。 Spider テンプレートを使用してデータをキャプチャおよび解析し、結果を MySQL データベースに保存する方法を実際の例で説明します。データ収集に Scrapy を使用すると、データ収集の効率と品質が大幅に向上し、その後のデータ分析、データ マイニング、その他の作業を強力にサポートできます。

以上がScrapy は、クローラー テンプレートが付属するデータ スクレイピング アプリケーションです。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Python クローラーを学ぶのにどれくらい時間がかかりますか Python クローラーを学ぶのにどれくらい時間がかかりますか Oct 25, 2023 am 09:44 AM

Python クローラーの学習にかかる時間は人によって異なり、個人の学習能力、学習方法、学習時間、経験などの要因によって異なります。 Python クローラーを学習するには、テクノロジー自体を学習するだけでなく、優れた情報収集スキル、問題解決スキル、チームワーク スキルも必要です。継続的な学習と実践を通じて、徐々に優れた Python クローラー開発者に成長していきます。

AjaxベースのScrapy非同期読み込み実装方法 AjaxベースのScrapy非同期読み込み実装方法 Jun 22, 2023 pm 11:09 PM

Scrapy は、Web サイトからデータを迅速かつ効率的に取得できるオープンソースの Python クローラー フレームワークです。ただし、多くの Web サイトでは Ajax 非同期読み込みテクノロジーが使用されているため、Scrapy がデータを直接取得することはできません。この記事では、Ajax 非同期読み込みをベースとした Scrapy の実装方法を紹介します。 1. Ajax 非同期ロードの原則 Ajax 非同期ロード: 従来のページロード方法では、ブラウザがサーバーにリクエストを送信した後、サーバーが応答を返してページ全体をロードするまで待ってから、次のステップに進む必要があります。

悪質なケース分析: LinkedIn で企業情報をクロールする方法 悪質なケース分析: LinkedIn で企業情報をクロールする方法 Jun 23, 2023 am 10:04 AM

Scrapy は、インターネット上の関連情報を迅速かつ簡単に取得できる Python ベースのクローラー フレームワークです。この記事では、Scrapy のケースを使用して、LinkedIn で企業情報をクロールする方法を詳細に分析します。ターゲット URL を決定する まず、ターゲットが LinkedIn 上の企業情報であることを明確にする必要があります。したがって、LinkedIn の企業情報ページの URL を見つける必要があります。 LinkedIn Web サイトを開き、検索ボックスに会社名を入力し、

Scrapy 最適化のヒント: 重複 URL のクロールを減らし、効率を向上させる方法 Scrapy 最適化のヒント: 重複 URL のクロールを減らし、効率を向上させる方法 Jun 22, 2023 pm 01:57 PM

Scrapy は、インターネットから大量のデータを取得するために使用できる強力な Python クローラー フレームワークです。ただし、Scrapy を開発する場合、重複した URL をクロールするという問題が頻繁に発生します。これは、多くの時間とリソースを無駄にし、効率に影響を与えます。この記事では、重複 URL のクロールを減らし、Scrapy クローラーの効率を向上させるための Scrapy 最適化テクニックをいくつか紹介します。 1. Scrapy クローラーの start_urls 属性と allowed_domains 属性を使用して、

PHP クローラーの一般的な問題の分析と解決策 PHP クローラーの一般的な問題の分析と解決策 Aug 06, 2023 pm 12:57 PM

PHP クローラーの一般的な問題と解決策の分析 はじめに: インターネットの急速な発展に伴い、ネットワーク データの取得はさまざまな分野で重要なリンクになっています。 PHP は広く使用されているスクリプト言語であり、データ取得において強力な機能を備えており、よく使用されるテクノロジの 1 つがクローラーです。ただし、PHP クローラーを開発および使用する過程で、いくつかの問題に遭遇することがよくあります。この記事では、これらの問題を分析して解決策を示し、対応するコード例を示します。 1. 対象のWebページのデータが正しく解析できない問題の説明。

Scrapy クローラーでの Selenium と PhantomJS の使用 Scrapy クローラーでの Selenium と PhantomJS の使用 Jun 22, 2023 pm 06:03 PM

Scrapy クローラーでの Selenium と PhantomJS の使用 Scrapy は、Python 上の優れた Web クローラー フレームワークであり、さまざまな分野のデータ収集と処理に広く使用されています。クローラーの実装では、特定の Web サイトが提供するコンテンツを取得するためにブラウザーの操作をシミュレートする必要がある場合があり、この場合には Selenium と PhantomJS が必要になります。 Selenium はブラウザ上で人間の操作をシミュレートし、Web アプリケーションのテストを自動化します。

効率的な Java クローラーの実践: Web データ クローリング技術の共有 効率的な Java クローラーの実践: Web データ クローリング技術の共有 Jan 09, 2024 pm 12:29 PM

Java クローラーの実践: Web ページ データを効率的にクロールする方法 はじめに: インターネットの急速な発展に伴い、大量の貴重なデータがさまざまな Web ページに保存されています。このデータを取得するには、多くの場合、各 Web ページに手動でアクセスして情報を 1 つずつ抽出する必要がありますが、これは間違いなく退屈で時間のかかる作業です。この問題を解決するために、人々はさまざまなクローラー ツールを開発しましたが、その中で Java クローラーは最もよく使用されているツールの 1 つです。この記事は、Java を使用して効率的な Web クローラーを作成する方法を読者に理解させ、具体的なコード例を通じてその実践方法を示します。 1. 爬虫類の根元

Scrapy の詳細な使用法: HTML、XML、および JSON データをクロールする方法? Scrapy の詳細な使用法: HTML、XML、および JSON データをクロールする方法? Jun 22, 2023 pm 05:58 PM

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

See all articles