Scrapyフレームワークを紹介しました:
爬虫類を書く、あなたは多くのことを行う必要があります。例えば:ネットワーク要求、データ分析、データストレージ、カウンター対策クローラ機構(置換IPプロキシ設定要求クラス)など非同期要求。
最初からすべての時間は、時間のより多くの廃棄物を自分の言葉を書く場合は、これらの作業。だから、Scrapy
いくつかの基本的な事柄の良いパッケージには、爬虫類は(効率化と開発効率をクロール)、より効率的になることができ、彼の上に書きます。
だから、会社では本当のは、いくつかの爬虫類の量で、使用しているScrapy
解決するためのフレームワークを。
Scrapyフレームモジュールの機能:
Scrapy Engine(引擎)
:Scrapy
フレームワークのコア。責任Spider
とItemPipeline
、Downloader
、Scheduler
中間通信、データ転送等を挙げることができます。Spider(爬虫)
:エンジンへのリンクをクロールする必要が送る、エンジンは最終的に戻って、要求されたデータは、その後、爬虫類に送信され、他のモジュールに来て、爬虫類は、必要なデータを解析するために行ってきました。これは、私たちが必要なものが何であるかをデータページ、取るリンクする登るので、私たちの開発者の一部は、プログラマ自身によって決定され、それを自分で書いてあります。Scheduler(调度器)
:エンジンから送信されたリクエストを受信するための責任、および配置されており、特定の方法に編成、スケジューリング要求などを担当するシーケンスです。Downloader(下载器)
:対応するデータをダウンロードするには、ネットワークに、ダウンロード要求を受信するための責任があるエンジンの上を通過した後、エンジンに返されます。Item Pipeline(管道)
:担当Spider(爬虫)
保存するデータからの転送。開発者が自分たちのニーズに目を向けるべき場所を特定のセーブ。Downloader Middlewares(下载中间件)
:あなたは、エンジンとダウンローダの間のミドルウェア通信機能を拡張することができます。Spider Middlewares(Spider中间件)
:ミドルウェア通信機能は、エンジンとクローラとの間に延びることができます。
Scrapyチャート:
Scrapyクイックスタート
インストールおよびドキュメント:
-
- インストール:によって
pip install scrapy
インストールします。 - Scrapy公式文書:http://doc.scrapy.org/en/latest
- Scrapy中国のドキュメント:http://scrapy-chs.readthedocs.io/zh_CN/latest/index.html
- インストール:によって
注意:
- では
ubuntu
、インストールscrapy
の前に、次の依存関係をインストールする必要がありますsudo apt-get install python3-dev build-essential python3-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev
し、次にてpip install scrapy
インストール。 - 場合は
windows
、システムがこのエラーを促しModuleNotFoundError: No module named 'win32api'
、次のコマンドを解決することができます使用しますpip install pypiwin32
。
はじめに:
プロジェクトを作成します。
使用するためにScrapy
プロジェクトを作成するためのフレームワークを、次のコマンドを作成する必要があります。まず、あなたはこのプロジェクトの格納ディレクトリに入力します。次に、作成するには、次のコマンドを使用します。
scrapy startproject [项目名称]
ディレクトリ構造の説明:
ここで重要な書類の作用の下で:
-
-
- items.pyは:モデルデータを格納するために使用されるクローラを下にクロール。
- middlewares.py:ファイルを格納するために使用されるミドルウェアの様々な。
- pipelines.py:ために使用される
items
ローカルディスクに保存されたモデル。 - settings.py:一部の構成情報本爬虫類(頻度要求を送信するよう要求ヘッダとして、IPエージェントのプール、など)。
- scrapy.cfg:プロジェクトの設定ファイル。
- クモパッケージ:すべての爬虫類た後、内部に格納されています。
-
embarrassments百科事典ピースをクロールScrapyフレームワークを使用します。
1.クローラーを作成するコマンドを使用します。 scrapy gensipder qsbk "qiushibaike.com"
名前を作成呼ばれるqsbk
爬虫類を、そしてページがでのみ制限をクロールすることができqiushibaike.com
、このドメイン。
爬虫類コード解析:
インポートscrapyの クラスQsbkSpider(scrapy.Spider): 名 = ' qsbk ' allowed_domains = [ ' qiushibaike.com ' ] start_urls = [ ' http://qiushibaike.com/ ' ] DEF構文解析(自己、応答): 合格
実際には、コードは、我々は代わりに、コマンドの、書き込みに手を所有することができます。ただ、自分自身のコードを書くためにあまりにも多くの問題を注文しないでください。
スパイダーを作成するには、継承するクラスをカスタマイズする必要がありscrapy.Spider
、その後、3つのプロパティと、このクラスのメソッドを定義します。
-
-
- 名前:爬虫類の名前、名前は一意である必要があります。
- allow_domains:ドメイン名を許可します。唯一の爬虫類このドメイン下のページをクロールし、ドメイン名ではありませんページが自動的に無視されます。
- start_urls:この変数のURLから爬虫類。
- 解析:エンジンは、クローラーパース、爬虫類をスローし、データ渡すために戻ってデータをダウンロードするためにダウンロードする
parse
方法を。これは、固定された文言です。このアプローチの役割は、最初は所望のデータを抽出することで、2つです。第二には、次の要求URLを生成することです。
-
2.変更しsettings.py
たコードを:
爬虫類を行う前に、あなたは変更する覚えておく必要がありますsetttings.py
設定を。二つの場所を強く設定をお勧めします。
-
-
ROBOTSTXT_OBEY
Falseに設定してください。デフォルトはTrueです。そのマシンが見つからない場合は爬虫類、scrapyはまず、robots.txtファイルに行ったときに、契約に準拠しています。直接クロールを停止します。DEFAULT_REQUEST_HEADERS
追加User-Agent
。また、これは私の要求は通常の要求ではなく、爬虫類で、サーバーに指示します。
-
3.爬虫類のコードを実行します。
インポートscrapy からabcspider.itemsがQsbkItemインポート クラスQsbkSpider(scrapy.Spider): 名 = ' qsbk ' allowed_domains = [ ' qiushibaike.com ' ] start_urls = [ ' https://www.qiushibaike.com/text/ ' ] DEF構文解析(自己、応答): outerbox = response.xpath(" // divの[ID @ = 'コンテンツ左'] / DIV " ) 項目 = [] のためのボックスでouterbox: 著者= box.xpath(" .// divの[含まれています(@クラス、 '著者')] // H2 /テキスト()" ).extract_first()。ストリップ() コンテンツ = box.xpath(" .// div要素[ @クラス= 'コンテンツ'] /スパン/テキスト()" ).extract_first()。ストリップ() 項目 = QsbkItem() 項目[ " 著者" ] = 著者 項目[ " コンテンツ" ] = コンテンツ items.append(アイテム) リターンアイテム
インポートscrapyの クラスQsbkItem(scrapy.Item): 著者 = scrapy.Field() 含有量 = scrapy.Field()
インポートのJSON クラス AbcspiderPipeline(オブジェクト): デフ__init __(自己): self.items = [] DEF process_item(自己、アイテム、クモ): self.items.append(辞書(アイテム)) プリント(" = " * 40 ) リターンアイテム デフclose_spider(自己、クモ): オープンと(' qsbk.json '、' W '、エンコード= ' UTF-8 ')としてFP: json.dump(self.items、FP、ensure_ascii=偽)
4.実行scrapyアイテム:
scrapyプロジェクトを実行します。端末内に配置されているプロジェクトのパスを入力する必要があり、その後、scrapy crawl [爬虫名字]
あなたは指定された爬虫類を実行することができます。
あなたがするたびにコマンドラインを実行したくない場合は、書面でこのコマンドを置くことができます。その上で実行pycharmで、この文書の実装後。
例えば、今と呼ばれる新しいファイルを作成しstart.py
、このファイルに次のコードを記入した後、:
from scrapy import cmdline
cmdline.execute("scrapy crawl qsbk".split())