Scrapy爬虫類入門チュートリアル3コマンドラインツールの紹介と例
10434 ワード
Pythonバージョン管理:pyenvとpyenv-virtualenv Scrapy爬虫入門チュートリアルインストールと基本使用Scrapy爬虫入門チュートリアル2公式提供Demo Scrapy爬虫入門チュートリアル3コマンドラインツール紹介と例Scrapy爬虫入門チュートリアル4 Spider(爬虫)Scrapy爬虫入門チュートリアル5 Selectors(セレクタ)Scrapy爬虫入門チュートリアル6 Items(プロジェクト)Scrapy爬虫入門チュートリアル7 Item Loaders(プロジェクトローダー)Scrapy爬虫入門チュートリアル8インタラクティブshell Scrapy爬虫入門チュートリアル9 Item Pipeline(プロジェクトパイプ)Scrapy爬虫入門チュートリアル10 Feed exports(エクスポートファイル)Scrapy爬虫入門チュートリアル10 1 RequestとResponse(リクエストと応答)Scrapy爬虫入門チュートリアル12 Link Extractors(リンク抽出器)
開発環境:
[toc]
コマンドラインツール
Scrapyはscrapyコマンドラインツールによって制御され、現在の最新バージョン0.10
設定
Scrapyはscrapyになります.cfgは、標準位置のiniスタイルファイルで構成パラメータを検索します.システムのデフォルト構成: グローバルプロファイル: 用プロジェクトプロファイル:
これらのファイルからの設定は、列の優先順位に従ってマージされます.ユーザー定義の値はシステムレベルのデフォルト値よりも優先度が高く、プロジェクト範囲の設定は定義時に他のすべての設定を上書きします.
Scrapyも理解しており、いくつかの環境変数を構成することができます.現在、これらは次のとおりです.
SCRAPY_SETTINGS_MODULE(設定の指定を参照)SCRAPY_PROJECT SCRAPY_PYTHON_SHELL(Scrapy shell参照)
Scrapyプロジェクトのデフォルト構造
コマンドラインツールとそのサブコマンドを詳しく理解する前に、Scrapyプロジェクトのディレクトリ構造を理解しておきましょう.
変更は可能ですが、すべてのScrapyプロジェクトのデフォルトでは、次のようなファイル構造があります.
ここで、ディレクトリscrapy.cfgファイルはプロジェクトのルートディレクトリにあります.このファイルには、プロジェクト設定を定義するpythonモジュールの名前が含まれています.ここでは、次の例を示します.
scrapyツールの使用
パラメータのないScrapyツールを実行すると、ヘルプと使用可能なコマンドが印刷されます.プロジェクトのルートディレクトリに直接入力するコマンドライン:scrapy
プロジェクトの作成
このscrapyツールを使用して最初に行うことは、Scrapyプロジェクトを作成することです:
次に、新しいプロジェクトディレクトリに入ります:
せいぎょこうもく
scrapyプロジェクト内のツールを使用して、それらを制御および管理できます.
みんなは焦らないで、だから物を一気に紹介して、具体的な詳細は後で書きます.
たとえば、新しい爬虫類を作成するには、
一部のScrapyコマンド(crawlなど)は、Scrapyプロジェクトの内部から実行する必要があります.以下のコマンドを参照してください.内部プロジェクトから実行する必要があるコマンドの詳細を参照してください.
また、一部のコマンドは、プロジェクトから実行するときに少し異なる動作をする可能性があります.例えばuser_Agentが取得しているURLが特定の爬虫類に関連付けられている場合、fetchコマンドは爬虫類オーバーライドの動作(属性オーバーライドユーザーエージェントなど)を使用します.これは、fetchコマンドが爬虫類プログラムがページをダウンロードする方法を確認するために使用されるため、意図的です.
共通のツールコマンド
このセクションには、説明と使用例を含む組み込みコマンドが使用できるリストがあります.各コマンドの詳細は、次のコマンドを実行していつでも入手できます.
使用可能なすべてのコマンドが表示されます:グローバルコマンド: [startproject] [genspider] [settings] [runspider] [shell] [fetch] [view] [version] プロジェクトコマンドのみ: [crawl] [check] [list] [edit] [parse] [bench]
startproject
構文:
使用例:
構文:
使用例:
これは、事前定義されたテンプレートに基づいた爬虫類を作成する便利なショートカットコマンドにすぎませんが、爬虫類を作成する唯一の方法ではありません.このコマンドを使用するのではなく、爬虫類ソースファイルを自分で作成できます.
crawl
構文:
使用例:
check
構文:
list
構文:
使用例:
edit
構文:
使用例:
fetch
構文:
このコマンドの興味深いことは、爬虫類がダウンロードしたページを取得することです.例えば、爬虫類にUSERがある場合はAGENTプロパティは、それを使用するユーザーエージェントを上書きします.
このコマンドは、爬虫類がどのようにページを取得するかを「見る」ために使用できます.
プロジェクトの外部で使用すると、特定の爬虫類の動作は適用されず、既定のScrapyダウンロード設定のみが使用されます.
サポートされているオプション:
--spider=SPIDER:爬虫類を迂回して特定の爬虫類を自動的に検出し、強制的に使用する--headers:応答の本文ではなく、応答のHTTPヘッダを印刷する--no-redirect:HTTP 3 xxリダイレクトに従わない(デフォルトはそれらに従う)
使用例:
view
構文:
サポートされているオプション:
--spider=SPIDER:爬虫類を迂回して特定の爬虫類を自動的に検出し、強制的に使用する--no-redirect:HTTP 3 xxリダイレクトに従わない(デフォルトはそれらに従う)使用例:
shell
構文:
サポートされているオプション:
--spider=SPIDER:爬虫類の自動検出と特定の爬虫類-c codeの強制使用を回避する:shellのコードを評価し、結果を印刷して終了する--no-redirect:HTTP 3 xxリダイレクトに従わない(デフォルトはそれらに従う);これは、コマンドラインでパラメータとして渡すことができるURLにのみ影響します.shellにいるとfetch(url)はデフォルトでHTTPリダイレクトに従います.使用例:
parse
構文:
サポートされているオプション:
--spider=SPIDER:爬虫類を迂回して自動的に検出し、特定の爬虫類を強制的に使用する--a NAME=VALUE:set spider argument(繰り返し可能)--callbackまたは-c:spiderメソッドをコールバックとして使用して応答を解析する--pipelines:パイプ処理項目--rulesまたは-r:CrawlSpiderルールを使用して応答を解析するコールバック(すなわちspiderメソッド)--noitems:キャプチャされたアイテムを表示しない--nolinks:抽出されたリンクを表示しない--nocolour:pygmentsを使用して出力をシェーディングしない--depthまたは-d:再帰追跡を要求する深度レベル(デフォルト:1)--verboseまたは-v:各深度レベルの情報使用例を表示する:
settings
構文:
プロジェクトで使用すると、プロジェクト設定値が表示されます.そうしないと、デフォルトのScrapy値が表示されます.
使用例:
runspider
構文:
使用例:
version
構文:
bench
新しいバージョン0.17.構文:
カスタムプロジェクトコマンド
COMMANDSもご利用いただけますMODULE設定カスタム項目追加コマンド.コマンドの実装例については、scrapy/commandsのScrapyコマンドを参照してください.
開発環境:
Python 3.6.0
(現在の最新)Scrapy 1.3.2
(現在の最新)[toc]
コマンドラインツール
Scrapyはscrapyコマンドラインツールによって制御され、現在の最新バージョン0.10
設定
Scrapyはscrapyになります.cfgは、標準位置のiniスタイルファイルで構成パラメータを検索します.
/etc/scrapy.cfg
またはc:\scrapy\scrapy.cfg
~/.config/scrapy.cfg
($XDG_CONFIG_HOME
)および~/.scrapy.cfg
($HOME
)scrapy.cfg
はscrapyプロジェクトのルートディレクトリにあります.これらのファイルからの設定は、列の優先順位に従ってマージされます.ユーザー定義の値はシステムレベルのデフォルト値よりも優先度が高く、プロジェクト範囲の設定は定義時に他のすべての設定を上書きします.
Scrapyも理解しており、いくつかの環境変数を構成することができます.現在、これらは次のとおりです.
SCRAPY_SETTINGS_MODULE(設定の指定を参照)SCRAPY_PROJECT SCRAPY_PYTHON_SHELL(Scrapy shell参照)
Scrapyプロジェクトのデフォルト構造
コマンドラインツールとそのサブコマンドを詳しく理解する前に、Scrapyプロジェクトのディレクトリ構造を理解しておきましょう.
変更は可能ですが、すべてのScrapyプロジェクトのデフォルトでは、次のようなファイル構造があります.
scrapy.cfg
myproject/
__init__.py
items.py
pipelines.py
settings.py
spiders/
__init__.py
spider1.py
spider2.py
...
ここで、ディレクトリscrapy.cfgファイルはプロジェクトのルートディレクトリにあります.このファイルには、プロジェクト設定を定義するpythonモジュールの名前が含まれています.ここでは、次の例を示します.
[settings]
default = myproject.settings
scrapyツールの使用
パラメータのないScrapyツールを実行すると、ヘルプと使用可能なコマンドが印刷されます.プロジェクトのルートディレクトリに直接入力するコマンドライン:scrapy
:
Scrapy 1.3.2 - no active project
Usage:
scrapy [options] [args]
Available commands:
bench Run quick benchmark test
commands
fetch Fetch a URL using the Scrapy downloader
genspider Generate new spider using pre-defined templates
runspider Run a self-contained spider (without creating a project)
settings Get settings values
shell Interactive scraping console
startproject Create new project
version Print Scrapy version
view Open URL in browser, as seen by Scrapy
[ more ] More commands available when run from project directory
Use "scrapy -h" to see more info about a command
プロジェクトの作成
このscrapyツールを使用して最初に行うことは、Scrapyプロジェクトを作成することです:
scrapy startproject myproject [ project_dir ]
これはプロジェクト_dirディレクトリの下にScrapyプロジェクトを作成します.プロジェクト_dirは指定していませんproject_dirはmyproject名と同じになります.次に、新しいプロジェクトディレクトリに入ります:
cd project_dir
scrapyコマンドを使用して、プロジェクトを管理および制御できます.せいぎょこうもく
scrapyプロジェクト内のツールを使用して、それらを制御および管理できます.
みんなは焦らないで、だから物を一気に紹介して、具体的な詳細は後で書きます.
たとえば、新しい爬虫類を作成するには、
scrapy genspider mydomain mydomain.com
上記のコマンドでspider nameがmydomainの爬虫類を作成しましたstart_urlsはhttp://www.cnblogs.com/の爬虫類.一部のScrapyコマンド(crawlなど)は、Scrapyプロジェクトの内部から実行する必要があります.以下のコマンドを参照してください.内部プロジェクトから実行する必要があるコマンドの詳細を参照してください.
また、一部のコマンドは、プロジェクトから実行するときに少し異なる動作をする可能性があります.例えばuser_Agentが取得しているURLが特定の爬虫類に関連付けられている場合、fetchコマンドは爬虫類オーバーライドの動作(属性オーバーライドユーザーエージェントなど)を使用します.これは、fetchコマンドが爬虫類プログラムがページをダウンロードする方法を確認するために使用されるため、意図的です.
共通のツールコマンド
このセクションには、説明と使用例を含む組み込みコマンドが使用できるリストがあります.各コマンドの詳細は、次のコマンドを実行していつでも入手できます.
scrapy -h
使用可能なすべてのコマンドが表示されます:
scrapy -h
上記の2つのコマンドは、Scrapyプロジェクト内でのみ動作するか、グローバルコマンドの場合にのみ動作します(ただし、プロジェクト内の構成で上書きされる可能性があります).startproject
構文:
scrapy startproject [project_dir]
ディレクトリproject_名前の下にScrapyというプロジェクトproject_を作成します.dir .プロジェクト_dirは指定していませんproject_dirはmyproject名と同じになります.使用例:
$ scrapy startproject myproject
genspider 構文:
scrapy genspider [-t template]
プロジェクトから呼び出された場合、現在のフォルダまたは現在のプロジェクトのspidersフォルダに新しい爬虫類を作成します.このパラメータは爬虫類のnameに設定され、allowed_を生成するために使用されます.domainsとstart_urls爬虫類のプロパティ.使用例:
$ scrapy genspider -l
Available templates:
basic
crawl
csvfeed
xmlfeed
$ scrapy genspider example example.com
Created spider 'example' using template 'basic'
$ scrapy genspider -t crawl scrapyorg scrapy.org
Created spider 'scrapyorg' using template 'crawl'
これは、事前定義されたテンプレートに基づいた爬虫類を作成する便利なショートカットコマンドにすぎませんが、爬虫類を作成する唯一の方法ではありません.このコマンドを使用するのではなく、爬虫類ソースファイルを自分で作成できます.
crawl
構文:
scrapy crawl
爬虫類を使って登り始める.使用例:
$ scrapy crawl myspider
[ ... myspider starts crawling ... ]
check
構文:
scrapy check [-l]
使用例:$ scrapy check -l
first_spider
* parse
* parse_item
second_spider
* parse
* parse_item
$ scrapy check
[FAILED] first_spider:parse_item
>>> 'RetailPricex' field is missing
[FAILED] first_spider:parse
>>> Returned 92 requests, expected 0..4
list
構文:
scrapy list
現在のプロジェクトで使用可能なすべての爬虫類をリストします.行ごとに爬虫類が出力されます.使用例:
$ scrapy
spider1
spider2
edit
構文:
scrapy edit
このコマンドは、最も一般的な便利なショートカットとしてのみ提供されます.開発者は、爬虫類を作成およびデバッグするために任意のツールまたはIDEを選択することができます.使用例:
$ scrapy edit spider1
fetch
構文:
scrapy fetch
Scrapyダウンロードを使用して、指定されたURLをダウンロードし、標準出力にコンテンツを書き込みます.このコマンドの興味深いことは、爬虫類がダウンロードしたページを取得することです.例えば、爬虫類にUSERがある場合はAGENTプロパティは、それを使用するユーザーエージェントを上書きします.
このコマンドは、爬虫類がどのようにページを取得するかを「見る」ために使用できます.
プロジェクトの外部で使用すると、特定の爬虫類の動作は適用されず、既定のScrapyダウンロード設定のみが使用されます.
サポートされているオプション:
--spider=SPIDER:爬虫類を迂回して特定の爬虫類を自動的に検出し、強制的に使用する--headers:応答の本文ではなく、応答のHTTPヘッダを印刷する--no-redirect:HTTP 3 xxリダイレクトに従わない(デフォルトはそれらに従う)
使用例:
$ scrapy fetch --nolog http://www.example.com/some/page.html
[ ... html content here ... ]
$ scrapy fetch --nolog --headers http://www.example.com/
{'Accept-Ranges': ['bytes'],
'Age': ['1263 '],
'Connection': ['close '],
'Content-Length': ['596'],
'Content-Type': ['text/html; charset=UTF-8'],
'Date': ['Wed, 18 Aug 2010 23:59:46 GMT'],
'Etag': ['"573c1-254-48c9c87349680"'],
'Last-Modified': ['Fri, 30 Jul 2010 15:30:18 GMT'],
'Server': ['Apache/2.2.3 (CentOS)']}
view
構文:
scrapy view
Scrapy爬虫類が「見える」ため、ブラウザで指定したURLを開きます.通常のユーザーとは異なるWebページが表示される場合があるため、爬虫類が「何を見たか」を確認し、希望していることを確認することができます.サポートされているオプション:
--spider=SPIDER:爬虫類を迂回して特定の爬虫類を自動的に検出し、強制的に使用する--no-redirect:HTTP 3 xxリダイレクトに従わない(デフォルトはそれらに従う)使用例:
$ scrapy view http://www.example.com/some/page.html
[ ... browser starts ... ]
shell
構文:
scrapy shell [url]
は、指定されたURL(指定された場合)のScrapy shellを起動し、URLが指定されていない場合は空です.UNIXスタイルのローカルファイルパスもサポートされています.または.../プレフィックスまたは絶対ファイルパス.詳細については、Scrapy shellを参照してください.サポートされているオプション:
--spider=SPIDER:爬虫類の自動検出と特定の爬虫類-c codeの強制使用を回避する:shellのコードを評価し、結果を印刷して終了する--no-redirect:HTTP 3 xxリダイレクトに従わない(デフォルトはそれらに従う);これは、コマンドラインでパラメータとして渡すことができるURLにのみ影響します.shellにいるとfetch(url)はデフォルトでHTTPリダイレクトに従います.使用例:
$ scrapy shell http://www.example.com/some/page.html
[ ... scrapy shell starts ... ]
$ scrapy shell --nolog http://www.example.com/ -c '(response.status, response.url)'
(200, 'http://www.example.com/')
# shell follows HTTP redirects by default
$ scrapy shell --nolog http://httpbin.org/redirect-to?url=http%3A%2F%2Fexample.com%2F -c '(response.status, response.url)'
(200, 'http://example.com/')
# you can disable this with --no-redirect
# (only for the URL passed as command line argument)
$ scrapy shell --no-redirect --nolog http://httpbin.org/redirect-to?url=http%3A%2F%2Fexample.com%2F -c '(response.status, response.url)'
(302, 'http://httpbin.org/redirect-to?url=http%3A%2F%2Fexample.com%2F')
parse
構文:
scrapy parse [options]
指定したURLを取得し、処理した爬虫類を使用して解析し、--callbackオプションで渡す方法、またはparseが与えられていない場合.サポートされているオプション:
--spider=SPIDER:爬虫類を迂回して自動的に検出し、特定の爬虫類を強制的に使用する--a NAME=VALUE:set spider argument(繰り返し可能)--callbackまたは-c:spiderメソッドをコールバックとして使用して応答を解析する--pipelines:パイプ処理項目--rulesまたは-r:CrawlSpiderルールを使用して応答を解析するコールバック(すなわちspiderメソッド)--noitems:キャプチャされたアイテムを表示しない--nolinks:抽出されたリンクを表示しない--nocolour:pygmentsを使用して出力をシェーディングしない--depthまたは-d:再帰追跡を要求する深度レベル(デフォルト:1)--verboseまたは-v:各深度レベルの情報使用例を表示する:
$ scrapy parse http://www.example.com/ -c parse_item
[ ... scrapy log lines crawling example.com spider ... ]
>>> STATUS DEPTH LEVEL 1 <<<
# Scraped Items ------------------------------------------------------------
[{'name': u'Example item',
'category': u'Furniture',
'length': u'12 cm'}]
# Requests -----------------------------------------------------------------
[]
settings
構文:
scrapy settings [options]
Scrapy設定の値を取得します.プロジェクトで使用すると、プロジェクト設定値が表示されます.そうしないと、デフォルトのScrapy値が表示されます.
使用例:
$ scrapy settings --get BOT_NAME
scrapybot
$ scrapy settings --get DOWNLOAD_DELAY
0
runspider
構文:
scrapy runspider
プロジェクトを作成せずにPythonファイルに含まれる爬虫類を実行します.使用例:
$ scrapy runspider myspider.py
[... ...]
version
構文:
scrapy version [-v]
Scrapyバージョンを印刷します.-vを使用すると、Python、Twisted、プラットフォーム情報も印刷されます.これは有用なエラーレポートです.bench
新しいバージョン0.17.構文:
scrapy bench
クイックデータムテストを実行します.きじゅんカスタムプロジェクトコマンド
COMMANDSもご利用いただけますMODULE設定カスタム項目追加コマンド.コマンドの実装例については、scrapy/commandsのScrapyコマンドを参照してください.