私はScrapy
Webスクレイピングフレームワークをかなり広範囲に使用してきましたが、最近、 pyspider
という別のフレームワーク/システムがあることを発見しました。 githubページに、新鮮で、活発に開発され、人気があります。
pyspider
のホームページには、すぐにサポートされるいくつかの項目がリストされています。
スクリプトエディター、タスクモニター、プロジェクトマネージャー、結果ビューアーを備えた強力なWebUI
Javascriptページがサポートされています!
タスクの優先度、再試行、定期的、およびインデックスページの年齢またはマーク(更新時間など)による再クロール
分散アーキテクチャ
これらはScrapy
自体が提供しないものですが、 portia
(Web UIの場合)、 scrapyjs
(jsページの場合)および scrapyd
(APIを介したデプロイと配布)。
pyspider
だけでこれらすべてのツールを置き換えることができるというのは本当ですか?言い換えれば、pyspider
はScrapyの直接の代替手段ですか?そうでない場合、どのユースケースをカバーしますか?
「広すぎる」または「意見に基づく」境界線を越えていないことを願っています。
pyspiderとScrapyの目的は同じで、Webスクレイピングですが、それを行うことについての見方は異なります。
クモはWWWが死ぬまで決して止まるべきではありません。 (情報は変化し、データはWebサイトで更新され、スパイダーは最新のデータをスクレイプする能力と責任を持つ必要があります。そのため、pyspiderにはURLデータベース、強力なスケジューラー、@every
、age
などがあります。)
pyspiderは、フレームワーク以上のサービスです。 (コンポーネントは分離されたプロセスで実行されています、lite-all
バージョンもサービスとして実行されています。Python環境ではなくブラウザで、フェッチまたはスケジュールに関するすべてが必要です。起動パラメータやグローバル設定ではなく、APIを介してスクリプトによって制御され、リソース/プロジェクトはpyspiderなどによって管理されます...)
pyspiderはスパイダーシステムです。 (C/C++/Javaまたは任意の言語で開発された場合でも、パフォーマンスを向上させたり容量を増やしたりするために、任意のコンポーネントを置き換えることができます)
そして
on_start
vs start_url
download_delay
return json
vs class Item
Pipeline
set
実際、私はScrapyからあまり言及していません。 pyspiderはScrapyとは本当に異なります。
しかし、なぜ 自分で試してみてください ? pyspiderも fast で、使いやすいAPIを備えており、インストールせずに試すことができます。
私はscrapyとpyspiderの両方を使用しているので、次のことを提案したいと思います。
ウェブサイトが本当に小さい/シンプルな場合は、必要なものがほぼすべて揃っているので、最初にpyspiderを試してください
ただし、pyspiderを試してみて、ニーズに合わないことがわかった場合は、scrapyを使用するときが来ました。 --on_startをstart_requestに移行します-index_pageを解析に移行します-detail_ageをdetail_ageに移行します-self.crawlをresponse.followに変更します
その後、ほぼ完了です。これで、ミドルウェア、アイテム、ピップラインなどのスクラピーズの高度な機能を試すことができます。