Scrapyを学習のPythonの爬虫類

途中の爬虫類では、学習がscrapy不可欠リンクです。たぶん、現時点では多くの友人に連絡し、学ぶされているscrapyので、良い、私たちは一緒に学びます。接触したscrapyいくつかの疑問を持っていることが、すべての後に、私が開始するかわからないアップという枠組みである人。マニュアルから慎重ボー主が開かれたscrapy学び、共有し、どのように迅速にそれに慣れscrapyを開始するためにシリーズを。

Benpian第一章、紹介し、理解などscrapyについてあなたに1をお勧めします研究の終わりに、scrapy書籍だけでなく、さまざまな方法。

なぜ爬虫類のフレームワーク?

あなたが特定の理解の爬虫類の基本的な知識を持っている場合、クローラフレームを見て時間です。なぜクローラフレームを使うのか?

  • 基本的な学習の枠組みはそれを使用する方法に限定されるものではなく、プログラミングの考え方を学ぶことです。マスターフレームワークから学んだ、実際には、理解の思考プロセスです。
  • フレームワークだけでなく、我々の開発には大きな利便性をもたらしています。多くの古いルールはすでに書かれている、と私たちは車を作る繰り返す必要はありません、私たちは大幅に作業負荷を軽減、うまく自分のニーズに応じて実装するために、独自の機能をカスタマイズする必要があります。
  • 優れたフレームワークのコード、プログラミングコードを増強する能力を参照して学びます。

ブロガーは、フレームワークは、あなたがそれを使用する方がよい、とさえそれを拡張することができ、この考え方を把握する能力である、フレームワークを学ぶこれらの点の爬虫類に応じて行われるが、目標は、フレームワークの核となるアイデアを習得することであることを覚えておいてくださいました。

はじめにscrapyフレームワーク

フレームワークの爬虫類は、より人気があるscrapypyspider、誰もが好きなことで私は、非考えるscrapyよりもどれも他。scrapyシニア爬虫類のためのオープンソースのフレームワークである、我々はそれを呼び出すことができます「scrapy言語を。」これは、使用しpythonた構造化データを抽出し、Webページをクロールするために書かれた、および構造データは、印加されたデータ分析やデータマイニングのより良い理解を得るでしょう。scrapy次のような特徴のいくつか:

  • scrapyイベントベースのメカニズム、使用twisted、非ブロッキング非同期操作を実現するための設計の。これは、従来のブロッキング要求に比べ、大幅にCPU使用率、効率およびクロールを改善します。
  • 簡単な構成で、単にコードのラインを提供することにより、複雑な機能を実現します。
  • そのような分散としてスケーラブル、豊富なプラグイン、scrapy + redis、爬虫類可視化プラグイン。
  • 使いやすい分析、scrapyカプセル化xpathパーサがより便利で、より高度な提供のようにselector効果的に破損して対処することができます設定、HTMLコードおよびコーディングを。

優れているscrapyや要望+ BS使用?

使用scrapyは、それを使用しない理由はいくつかの友人は、尋ねましたか?resquests + beautifulsoup組み合わせ、それを完了できませんでしたか?

自分の都合に合わせ、ないもつれを行います。resquests + beautifulsoupはい、もちろん、行います任意のパーサ+リクエストは、彼らは非常に良い組み合わせです。これの利点は、我々は必ずしも固定パターンに縛られない柔軟な書き込み私たち自身のコードを、使用することができるということです。固定枠のため、時には抗抗登山に対処するためのscrapyが完全でないなど、必ずしもそれらを使用することは容易ではないですが、また解決に多くの時間を所有しています。

しかし、タスクが関係しているいくつかの中小爬虫類のために、scrapyそれは確かに非常に良い選択である、それはいくつかの重複したコードを書くために私たちを回避し、優れた性能を持っています。このような独自のコードとして、効率を向上させるために、すべてのマルチスレッド時または非同期コードをクロールするように私たち自身のコードを、書く、大幅に無駄な開発時間。我々は、単にルールを解析し、書く、書かれているこの時間枠は何より良い選択ではありません使用pipelineだけで結構。それでは、具体的に我々はそれが必要なのでしょうか?以下のチャートは理解して考えてみましょう。

clipboard.png

したがって、使用のために個々のニーズや好みに応じて決定されます。しかし、学習の順序のためとして、それを学ぶことが推奨されresquests + beautifulsoup、その後、連絡をScrapy参照目的のみのために、効果が良いかもしれません。

scrapyアーキテクチャ

本研究ではScrapy、我々は理解する必要があり、前のScrapyアーキテクチャを、アーキテクチャはscrapy学習を理解することが不可欠です。

clipboard.png
写真Scrapy公式文書

以下の説明は、(参照により本明細書に組み込まれる)の公式ドキュメントの文書から取られ、私は非常に明確に表示するには、この比較チャートが理解できることを理解しました。

パッケージ

Scrapy Engine
引擎负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。 详细内容查看下面的数据流(Data Flow)部分。

调度器(Scheduler)
调度器从引擎接受request并将他们入队,以便之后引擎请求他们时提供给引擎。

下载器(Downloader)
下载器负责获取页面数据并提供给引擎,而后提供给spider

Spiders
SpiderScrapy用户编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。 每个spider负责处理一个特定(或一些)网站。

Item Pipeline
Item Pipeline负责处理被spider提取出来的item。典型的处理有清理、 验证及持久化(例如存取到数据库中)。

下载器中间件(Downloader middlewares)
下载器中间件是在引擎及下载器之间的特定钩子(specific hook),处理Downloader传递给引擎的response。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。

Spider中间件(Spider middlewares)
Spider中间件是在引擎及Spider之间的特定钩子(specific hook),处理spider的输入(response)和输出(items及requests)。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。

数据流过程

  1. エンジンは、ウェブサイトを開いて(open a domain)、治療部位見つかったSpiderspiderリクエストURL(s)が最初にクロールされるように。
  2. エンジンSpiderのクロールやスケジューラに最初に取得したURL (Scheduler)Requestスケジュール。
  3. 次のスケジューラに登るために取らエンジンURL要求。
  4. スケジューラは、エンジンがURL中間体(要求ダウンロードされ、エンジンにクロールするURLを返し(request)ダウンローダに転送方向)(Downloader)
  5. ページをダウンロードしたら、ダウンロードページを生成しResponse、そしてミドルウェア(リターンダウンロード(response)エンジンへの方向)。
  6. ダウンローダにエンジンから受信ResponseすることによりSpider中间件スパイダープロセスに(入力方向)。
  7. Spider処理Responseとクロールに戻るItemと(フォローアップ)エンジンへの新しい要求。
  8. 項目へのクロールのエンジンは(スパイダーが戻っ)Item Pipeline、(スパイダー)は、スケジューラに要求を返します。
  9. これ以上のスケジューラがなくなるまで(第2段階から)が繰り返されるrequestサイトダウン、エンジン停止が。

 

おすすめ

転載: www.cnblogs.com/mxk123/p/12007019.html