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(リンク抽出器)
開発環境: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_dirscrapyコマンドを使用して、プロジェクトを管理および制御できます.
    せいぎょこうもく
    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]
  • [genspider]
  • [settings]
  • [runspider]
  • [shell]
  • [fetch]
  • [view]
  • [version]
  • プロジェクトコマンドのみ:
  • [crawl]
  • [check]
  • [list]
  • [edit]
  • [parse]
  • [bench]

  • startproject
    構文:scrapy startproject [project_dir]ディレクトリproject_名前の下にScrapyというプロジェクトproject_を作成します.dir .プロジェクト_dirは指定していませんproject_dirはmyproject名と同じになります.
    使用例:$ scrapy startproject myprojectgenspider
    構文: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コマンドを参照してください.