BeautifulSoupとScrapyクローラーの違いは?


134

アマゾンとe-bayの商品価格の比較がわかるウェブサイトを作りたい。これらのうちどれがよりよく機能し、なぜですか?私は多少BeautifulSoupに精通していますが、Scrapyクローラーについてはそれほど詳しくありません。


6
両方のサイトに優れたAPIがあるのに、なぜクローラーを使用するのでしょうか。aws.amazon.com/python developer.ebay.com/common/api
Inbar Rose

5
私はインド出身です。Amazon-Apiはインドのホストをサポートしていません。インドにはapi(locale)はありません。HOSTS = {'ca': 'ecs.amazonaws.ca'、 'cn': 'webservices.amazon.cn'、 'de': 'ecs.amazonaws.de'、 'es': 'webservices.amazon.es' 、「fr」:「ecs.amazonaws.fr」、「it」:「webservices.amazon.it」、「jp」:「ecs.amazonaws.jp」、「uk」:「ecs.amazonaws.co.uk」 、 'us': 'ecs.amazonaws.com'、}
Nishant Bhakta

11
APIがない他のサイトをクロールしたい場合はどうすればよいですか?
ニシャントバクタ2013年

@InbarRose Amazonの製品APIを使用するには、Amazon Associateアカウントが必要です。
ザカリーライアンスミス

回答:


231

ScrapyはWebスパイダーまたはWebスクレイパーフレームワークです。Scrapyにクロールを開始するルートURLを指定すると、クロールしてフェッチするURLの数(数)に制約を指定できます。ウェブスクレイピングやクロールのための完全なフレームワークです。

ながら

BeautifulSoup解析ライブラリであり、URLからコンテンツをフェッチするのに非常に優れており、手間をかけずにコンテンツの特定の部分を解析できます。指定したURLのコンテンツのみを取得して停止します。特定の条件で無限ループ内に手動で配置しない限り、クロールしません。

簡単に言うと、Beautiful Soupを使用すると、Scrapyに似たものを作成できます。美しいスープはライブラリであり、スクレイピーは完全なフレームワークです。

ソース


1
どちらが速いですか、つまりBeautifulSoupを使用していて、データをスクラップするのに約10秒かかります。美しいスープよりも速くスクレイピーはできますか?
shuboy2014 2016年

ブロッキングコードでbeautifulsoupを使用する場合、独立したリクエストがある限り、scrapyの方が高速ですが、asyncioでbeautifulsoupを使用してパフォーマンスを向上させることもできます。
dyeray 2018年

ScrapyとBeautifulSoupは非常に高速で、両方から最高のものを得ることができると思います。
Rahul、

18

私は両方とも良いと思います...両方を使用するプロジェクトを今やっています。最初に私は、scrapyを使用してすべてのページをスクラップし、パイプラインを使用してmongodbコレクションに保存します。また、ページに存在する画像をダウンロードします。その後、BeautifulSoup4を使用して、属性値を変更して特別なタグを取得する必要があるpos-processingを作成します。

どのページの製品が必要かわからない場合は、クローラーを使用して明示的なforループを作成せずにすべてのamazon / ebay Webサイトを実行して製品を探すことができるため、優れたツールは扱いにくくなります。

使用方法は非常に簡単です。


(Twisted、pywin32、pyOpenSSLなどのように)Scrapyには多くの依存関係があるため、WebサーバーでScrapyを使用できますか?(このばかげた質問でごめんなさい、私はpythonが初めてです)
Nishant Bhakta 2013年

Webサーバー上?私はそれを試したことはありません...私はそれをシェルで使用し、「scrapy crawl <name of crawler>」を実行してスパイダーを実行します...おそらくサーバーでこれを使用できますが、これはpythonを使用して呼び出す必要がありますサブプロセスモジュール(docs.python.org/2/library/subprocess.html)。私は決してこれを試さなかったようですが、おそらくそれはうまくいくかもしれません...ただのメモ、クローラーでエラーが発生する可能性がある場所を知るために、スクレイピーからのログメッセージを使用してください(スクレイピーインポートログから)。
rdenadai 2013年

4

どちらもデータの解析に使用しています。

スクレイピー

  • Scrapyは、高速で高レベルのWebクロールおよびWebスクレイピングフレームワークであり、Webサイトをクロールし、ページから構造化データを抽出するために使用されます。
  • しかし、データがJavaスクリプトから取得される場合や動的にロードされる場合には、いくつかの制限があります。スプラッシュ、セレンなどのパッケージを使用することで、それを克服できます。

BeautifulSoup

  • Beautiful Soupは、HTMLおよびXMLファイルからデータを引き出すためのPythonライブラリです。

  • このパッケージを使用して、Javaスクリプトからデータを取得したり、ページを動的にロードしたりできます。

BeautifulSoupによるスクレイピーは、静的および動的なコンテンツをスクレイピングするために使用できる最高のコンボの1つです。


2

私が行う方法は、スクレイピーではなくeBay / Amazon APIを使用し、BeautifulSoupを使用して結果を解析することです。

APIを使用すると、スクレイピークローラーから取得したものと同じデータを公式に取得できます。IDを隠したり、プロキシをいじったりする必要はありません。


8
この質問では、APIが利用できないソリューションを明確に求めています。
Rohanil 2017年

2

Scrapy これは Webをスクレイピングするフレームワークであり、クロールロジックのみに集中できるように、スクレイピングを簡単にする多数のグッズが付属しています。スクレイピーが私たちの世話をする私の好きなもののいくつかを以下に示します。

  • フィードのエクスポート:基本的に、CSV、JSON、jsonlines、XMLなどのさまざまな形式でデータを保存できます。
  • 非同期スクレイピング:Scrapyはツイストフレームワークを使用して、一度に複数のURLにアクセスして、各リクエストが非ブロッキング方法で処理されるようにします(基本的に、別のリクエストを送信する前にリクエストが完了するのを待つ必要はありません)。
  • セレクター:ここでは、スクレイピーと美しいスープを比較できます。セレクターを使用すると、見出し、クラス名を持つ特定のdivなどの特定のデータをWebページから選択できます。Scrapyはlxmlを解析に使用しており、美しいスープよりも非常に高速です。
  • プロキシ、ユーザーエージェント、ヘッダーなどの設定:スクレイピーを使用すると、プロキシやその他のヘッダーを動的に設定およびローテーションできます。

  • アイテムパイプライン:パイプラインを使用すると、抽出後にデータを処理できます。たとえば、MySQLサーバーにデータをプッシュするようにパイプラインを構成できます。

  • クッキー:scrapyは自動的にクッキーを処理します。

TLDR:スクレイピーは、大規模なクロールを構築するために必要なすべての機能を提供するフレームワークです。Webのクロールの複雑さを隠すさまざまな機能を提供します。セットアップの負担を気にすることなく、Webクローラーの作成を開始できます。

Beautiful soup Beautiful Soupは、 HTMLおよびXMLドキュメント解析するためのPythonパッケージです。したがって、美しいスープを使用すると、ダウンロード済みのWebページを解析できます。BS4は非常に人気があり、古いです。スクレイピーとは異なり、クローラーを作るためだけに美しいスープを使用することはできません。bs4でクローラーを作成するには、requests、urllibなどの他のライブラリーが必要です。繰り返しますが、これは、クロールされるURLのリストを管理する、クロールする、Cookieを処理する、プロキシを管理する、エラーを処理する、データをCSV、JSON、XMLなどにプッシュする独自の関数を作成する必要があることを意味します。マルチプロセッシングのような他のライブラリを使用する必要があるよりも。

総括する。

  • Scrapyは豊富なフレームワークであり、手間をかけずにクローラーの作成を開始できます。

  • 美しいスープは、ウェブページの解析に使用できるライブラリです。単独でウェブをこすることはできません。

あなたは間違いなくあなたのamazonとe-bay製品の価格比較ウェブサイトにscrapyを使うべきです。URLのデータベースを構築し、毎日クローラーを実行して(クロールジョブ、クロールをスケジュールするためのセロリ)、データベースの価格を更新できます。これにより、Webサイトは常にデータベースからプルされ、クローラーとデータベースは個別のコンポーネントとして機能します。


1

BeautifulSoupは、Webページから情報を抽出できるライブラリです。

一方、Scrapyはフレームワークであり、データを保存するためのパイプラインなど、スクレイピングプロジェクトで必要な上記のことやその他の多くのことを実行します。

このブログをチェックして、Scrapyを使い始めることができ ますhttps://www.inkoop.io/blog/web-scraping-using-python-and-scrapy/


0

スクレイピーを使用すると、大量のコードを保存して構造化プログラミングを始めることができます。スケイピーのあらかじめ作成されたメソッドが気に入らない場合は、スクレイピーメソッドの代わりにBeautifulSoupを使用できます。大きなプロジェクトには両方の利点があります。


0

違いは多く、ツール/テクノロジーの選択は個々のニーズに依存します。

主な違いは次のとおりです。

  1. BeautifulSoupはScrapyよりも比較的簡単に習得できます。
  2. 拡張機能、サポート、コミュニティは、Scrapyの方がBeautifulSoupよりも大きくなっています。
  3. BeautifulSoupがパーサーである間、Scrapyはスパイダーと見なされます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.