途中の爬虫類では、学習がscrapy
不可欠リンクです。たぶん、現時点では多くの友人に連絡し、学ぶされているscrapy
ので、良い、私たちは一緒に学びます。接触したscrapy
いくつかの疑問を持っていることが、すべての後に、私が開始するかわからないアップという枠組みである人。マニュアルから慎重ボー主が開かれたscrapy
学び、共有し、どのように迅速にそれに慣れscrapyを開始するためにシリーズを。
Benpian第一章、紹介し、理解などscrapy
についてあなたに1をお勧めします研究の終わりに、scrapy
書籍だけでなく、さまざまな方法。
なぜ爬虫類のフレームワーク?
あなたが特定の理解の爬虫類の基本的な知識を持っている場合、クローラフレームを見て時間です。なぜクローラフレームを使うのか?
- 基本的な学習の枠組みはそれを使用する方法に限定されるものではなく、プログラミングの考え方を学ぶことです。マスターフレームワークから学んだ、実際には、理解の思考プロセスです。
- フレームワークだけでなく、我々の開発には大きな利便性をもたらしています。多くの古いルールはすでに書かれている、と私たちは車を作る繰り返す必要はありません、私たちは大幅に作業負荷を軽減、うまく自分のニーズに応じて実装するために、独自の機能をカスタマイズする必要があります。
- 優れたフレームワークのコード、プログラミングコードを増強する能力を参照して学びます。
ブロガーは、フレームワークは、あなたがそれを使用する方がよい、とさえそれを拡張することができ、この考え方を把握する能力である、フレームワークを学ぶこれらの点の爬虫類に応じて行われるが、目標は、フレームワークの核となるアイデアを習得することであることを覚えておいてくださいました。
はじめにscrapyフレームワーク
フレームワークの爬虫類は、より人気があるscrapy
とpyspider
、誰もが好きなことで私は、非考える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
だけで結構。それでは、具体的に我々はそれが必要なのでしょうか?以下のチャートは理解して考えてみましょう。
したがって、使用のために個々のニーズや好みに応じて決定されます。しかし、学習の順序のためとして、それを学ぶことが推奨されresquests + beautifulsoup
、その後、連絡をScrapy
参照目的のみのために、効果が良いかもしれません。
scrapyアーキテクチャ
本研究ではScrapy
、我々は理解する必要があり、前のScrapy
アーキテクチャを、アーキテクチャはscrapy学習を理解することが不可欠です。
写真Scrapy公式文書
以下の説明は、(参照により本明細書に組み込まれる)の公式ドキュメントの文書から取られ、私は非常に明確に表示するには、この比較チャートが理解できることを理解しました。
パッケージ
Scrapy Engine
引擎负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。 详细内容查看下面的数据流(Data Flow)
部分。
调度器(Scheduler)
调度器从引擎接受request
并将他们入队,以便之后引擎请求他们时提供给引擎。
下载器(Downloader)
下载器负责获取页面数据并提供给引擎,而后提供给spider
。
SpidersSpider
是Scrapy
用户编写用于分析response
并提取item
(即获取到的item)或额外跟进的URL的类。 每个spider
负责处理一个特定(或一些)网站。
Item PipelineItem Pipeline
负责处理被spider
提取出来的item
。典型的处理有清理、 验证及持久化(例如存取到数据库中)。
下载器中间件(Downloader middlewares)
下载器中间件是在引擎及下载器之间的特定钩子(specific hook)
,处理Downloader
传递给引擎的response
。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy
功能。
Spider中间件(Spider middlewares)Spider中间件
是在引擎及Spider之间的特定钩子(specific hook)
,处理spider
的输入(response)和输出(items及requests)。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。
数据流过程
- エンジンは、ウェブサイトを開いて
(open a domain)
、治療部位見つかったSpider
とspider
リクエストURL(s)が最初にクロールされるように。 - エンジン
Spider
のクロールやスケジューラに最初に取得したURL(Scheduler)
にRequest
スケジュール。 - 次のスケジューラに登るために取らエンジンURL要求。
- スケジューラは、エンジンがURL中間体(要求ダウンロードされ、エンジンにクロールするURLを返し
(request)
ダウンローダに転送方向)(Downloader)
。 - ページをダウンロードしたら、ダウンロードページを生成し
Response
、そしてミドルウェア(リターンダウンロード(response)
エンジンへの方向)。 - ダウンローダにエンジンから受信
Response
することによりSpider中间件
スパイダープロセスに(入力方向)。 Spider
処理Response
とクロールに戻るItem
と(フォローアップ)エンジンへの新しい要求。- 項目へのクロールのエンジンは(スパイダーが戻っ)
Item Pipeline
、(スパイダー)は、スケジューラに要求を返します。 - これ以上のスケジューラがなくなるまで(第2段階から)が繰り返される
request
サイトダウン、エンジン停止が。