ウェブスクレイピングは、ウェブページからデータを収集する効果的な方法であり、 。いろいろと ライブラリ のようなウェブスクレイピングのためのプレゼント 、データサイエンティストの作業が最適になります。 Scrapyは、データの抽出、処理、保存に使用される強力なWebフレームワークです。このスクレイプチュートリアルでは、Webクローラーを作成する方法を学習します。このブログで説明されているトピックは次のとおりです。
- Scrapyとは何ですか?
- Webクローラーとは何ですか?
- Scrapyをインストールする方法は?
- 最初のScrapyプロジェクトを開始する
- あなたの最初のクモを作る
- データの抽出
- 抽出したデータの保存
Scrapyとは何ですか?
Scrapyは、Pythonで記述された無料のオープンソースWebクロールフレームワークです。もともと実行するように設計されました 、ただし、APIを使用してデータを抽出するためにも使用できます。それはScrapinghubltdによって維持されています。
Scrapyは、Webページのダウンロード、データの処理および保存に関しては完全なパッケージです。 。
ウェブサイトをスクレイピングする複数の方法を備えたウェブスクレイピングに関しては、それは大国のようなものです。 Scrapyは、より大きなタスクを簡単に処理し、複数のページまたはURLのグループを1分未満でスクレイピングします。非同期で動作するツイスターを使用して、並行性を実現します。
配列c ++を降順で並べ替える
これは、一般的なクローラーとディープクローラーを作成できるスパイダーコントラクトを提供します。 Scrapyは、データの値の置換などのさまざまな操作を実行できるスパイダー内の関数を作成するためのアイテムパイプラインも提供します。
Webクローラーとは何ですか?
Webクローラーは、Web上のドキュメントを自動的に検索するプログラムです。これらは主に、自動ブラウジングの反復アクション用にプログラムされています。
使い方?
Webクローラーは、司書と非常によく似ています。 Web上の情報を検索し、情報を分類してから、クロールされた情報のインデックスを作成してカタログ化し、それに応じて取得および保存します。
クローラーによって実行される操作は事前に作成されており、クローラーはそれらすべての操作を自動的に実行してインデックスを作成します。これらのインデックスには、出力ソフトウェアからアクセスできます。
Webクローラーを使用できるさまざまなアプリケーションを見てみましょう。
価格比較ポータルは、特定の製品の詳細を検索して、Webクローラーを使用してさまざまなプラットフォームの価格を比較します。
Webクローラーは、情報を取得するためのデータマイニングの分野で非常に重要な役割を果たします。
データ分析ツールは、Webクローラーを使用して、ページビュー、インバウンドリンク、アウトバウンドリンクのデータも計算します。
クローラーは、ニュースポータルなどのデータを収集するための情報ハブとしても機能します。
Scrapyをインストールするにはどうすればいいですか?
システムにscrapyをインストールするには、専用のvirtualenvにインストールすることをお勧めします。使用している場合、インストールはPythonの他のパッケージとほとんど同じように機能します コンダ 環境では、次のコマンドを使用してscrapyをインストールします。
conda install -cconda-forgeスクレイピー
pip環境を使用してscrapyをインストールすることもできます。
ピップインストールスクレイプ
オペレーティングシステムによっては、コンパイルの依存関係がいくつかある場合があります。 Scrapyは純粋なPythonで記述されており、次のようないくつかのPythonパッケージに依存する場合があります。
lxml –これは効率的なXMLおよびHTMLパーサーです。
区画–lxmlの上部に記述されたHTML / XML抽出ライブラリ
W3lib –URLとWebページのエンコーディングを処理するための多目的ヘルパーです
ツイスト–非同期ネットワークフレームワーク
暗号化–さまざまなネットワークレベルのセキュリティニーズに役立ちます
最初のScrapyプロジェクトを開始する
最初のScrapyプロジェクトを開始するには、ファイルを保存するディレクトリまたは場所に移動し、次のコマンドを実行します
スクレイピーstartprojectプロジェクト名
このコマンドを実行すると、その場所に次のディレクトリが作成されます。
プロジェクト名/
sparky.cfg:構成ファイルをデプロイします
プロジェクト名/
__init__。py:プロジェクトのPythonモジュール
items.py:プロジェクトアイテム定義ファイル
middlewares.py:プロジェクトミドルウェアファイル
pipes.py:プロジェクトパイプラインファイル
settings.py:プロジェクト設定ファイル
蜘蛛/
__init__。py:後でスパイダーを配置するディレクトリ
あなたの最初のクモを作る
スパイダーは、私たちが定義するクラスであり、Webから情報を収集するために使用されます。あなたはscrapy.Spiderをサブクラス化し、行う最初のリクエストを定義する必要があります。
スパイダーのコードを別のPythonファイルに記述し、プロジェクトのprojectname / spidersディレクトリに保存します。
quotes_spider.py
インポートスクレイピークラスQuotesSpider(scrapy.Spider):name = 'quotes' def start_request(self):urls = ['http://quotes.toscrape.com/page/1/'、http://quotes.toscrape.com / page / 2 /、] url内のurlの場合:yield scarpy.Request(url = url、callback = self.parse)def parse(self、response):page = response.url.split( '/')[-2 ] filename = 'quotes-%s.html'%page with open(filename、 'wb')as f:f.write(response.body)self.log( 'saved file%s'%filename)
ご覧のとおり、スパイダーにはさまざまな関数が定義されています。
名前:スパイダーを識別します。プロジェクト全体で一意である必要があります。
start_requests():スパイダーがクロールを開始する反復可能なリクエストを返す必要があります。
parse():これは、各リクエストでダウンロードされたレスポンスを処理するために呼び出されるメソッドです。
データの抽出
これまで、スパイダーはデータを抽出せず、HTMLファイル全体を保存するだけでした。スクレイプスパイダーは通常、ページから抽出されたデータを含む多くの辞書を生成します。コールバックでPythonのyieldキーワードを使用して、データを抽出します。
スクレイプクラスのインポートQuotesSpider(scrapy.Spider):name = 'quotes' start_urls = [http://quotes.toscrape.com/page/1/'、http://quotes.toscrape.com/page/2/、] def parse(self、response):response.css( 'div.quote')の引用用:yield {'text':quote.css(span.text :: text ')。get()、' author ':quote .css(small.author :: text ')get()、' tags ':quote.css(div.tags a.tag :: text')。getall()}
このスパイダーを実行すると、抽出されたデータがログとともに出力されます。
データの保存
抽出されたデータを保存する最も簡単な方法は、フィードエクスポートを使用することです。次のコマンドを使用して、データを保存します。
スクレイプクロール引用符-oquotes.json
このコマンドは、すべてのスクレイピングされたアイテムを含むquotes.jsonファイルを生成します。 JSON 。
これでこの記事の終わりになり、Pythonでscrapyを使用してWebクローラーを作成し、WebサイトをスクレイプしてデータをJSONファイルに抽出する方法を学びました。このチュートリアルで共有されているすべてのことを明確に理解していただければ幸いです。
初心者のためのmysqlワークベンチチュートリアル
「ScrapyTutorial」に関するこの記事が関連していると感じた場合は、 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社が世界中に広がっています。
私たちはあなたの旅のすべてのステップであなたを助け、なりたい学生や専門家のために設計されたカリキュラムを考え出すためにここにいます 。このコースは、Pythonプログラミングをすぐに開始できるように設計されており、Pythonのコア概念と高度な概念の両方、およびさまざまな概念についてトレーニングします。 お気に入り
ご不明な点がございましたら、「ScrapyTutorial」のコメントセクションでお気軽にご質問ください。喜んでお答えします。