インストール ガイド

Scrapyのインストール

Scrapy は CPython(デフォルトのPython実装)のPython 2.7(またはそれ以上)とPython 3.5(またはそれ以上)、またはPyPy(PyPy 5.9以降)で動作します。

あなたが Anaconda または Miniconda を使用している場合、Linux、Windows、およびOS X用の最新のパッケージがある conda-forge チャンネルからパッケージをインストールできます。

conda を使用してScrapyをインストールするには、以下を実行します:

conda install -c conda-forge scrapy

代わりに、既にPythonパッケージのインストールに精通している場合は、Scrapyとその依存関係をPyPIからインストールできます:

pip install Scrapy

あなたのご使用のオペレーティングシステムによっては、一部のScrapy依存関係のコンパイルの問題を解決する必要がある場合があるため、必ず プラットフォーム別インストール・ノート を確認してください。

システムパッケージとの競合を避けるため、Scrapyを 専用のvirtualenv環境 にインストールすることを、私たちは強くお勧めします(訳注:python3であればvenv環境)。

より詳細なプラットフォーム固有の手順、およびトラブルシューティング情報については、以下をお読みください。

あなたが知っておくべきこと

Scrapyは純粋なPythonで書かれており、いくつかの主要なPythonパッケージに依存しています。(とりわけ以下に依存します):

  • lxml 、効率的なXMLおよびHTMLパーサー

  • parsel 、lxmlで記述されたHTML/XMLデータ抽出ライブラリ

  • w3lib 、URLとWebページのエンコーディングを扱うための多目的ヘルパー

  • twisted 、非同期ネットワーキングフレームワーク

  • さまざまなネットワークレベルのセキュリティニーズに対処するための cryptography (暗号化) と pyOpenSSL

Scrapyがテストできる最小バージョンは次のとおりです:

  • Twisted 14.0

  • lxml 3.4

  • pyOpenSSL 0.14

Scrapyはこれらのパッケージの古いバージョンで動作する可能性がありますが、それらに対してテストされていないため、動作を継続する保証はありません。

これらのPythonパッケージのいくつかは、プラットフォームによっては追加のインストールが必要な非Pythonパッケージに依存しています。 プラットフォーム固有のガイド で確認して下さい。

これらの依存関係に関連する問題が発生した場合は、それぞれのインストール手順を参照してください:

プラットフォーム別インストール・ノート

Windows

pipを使用してWindowsにScrapyをインストールすることは不可能ではありませんが、インストールにまつわる多くの問題を回避するために、 Anaconda または Miniconda をインストールし、 conda-forge チャンネルのパッケージを使用することをお勧めします。

あなたが Anaconda または Miniconda をインストールしたら、次のコマンドでScrapyをインストールします:

conda install -c conda-forge scrapy

Ubuntu 14.04またはそれ以上

Scrapyは現在、lxml、twisted、pyOpenSSLの割と最近のバージョンでテストされており、最近のUbuntuディストリビューションと互換性があります。 しかし、TLS接続に潜在的な問題があるUbuntu 14.04などの古いバージョンのUbuntuもサポートされるべきです。

Ubuntuが提供する python-scrapy パッケージを 使用しないでください 。これらはたいてい古すぎて、最新のScrapyに追いつくことができていません。

Ubuntu(またはUbuntuベース)システムにScrapyをインストールするには、以下の依存関係をインストールする必要があります:

sudo apt-get install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev
  • python-devzlib1g-devlibxml2-devlibxslt1-dev は、 lxml の為に必要です。

  • libssl-devlibffi-devcryptography の為に必要です。

Python3にScrapyをインストールする場合は、Python3開発ヘッダーも必要になります:

sudo apt-get install python3 python3-dev

その後、 virtualenv 内で pip でScrapyをインストールできます:

pip install scrapy

注釈

Python以外の同様の依存関係を使用して、Debian Jessie(8.0)以降にScrapyをインストールできます。

Mac OS X

Scrapyの依存関係を構築するには、Cコンパイラと開発ヘッダーが必要です。 OS Xでは、通常これはAppleのXcode開発ツールによって提供されます。 Xcodeコマンドラインツールをインストールするには、ターミナルウィンドウを開き、以下を実行します:

xcode-select --install

pip によるシステムパッケージの更新を妨げる既知の問題(known issue)があります。 Scrapyとその依存関係を正常にインストールするには、これに対処する必要があります。 以下にいくつかの解決策を示します:

  • (推奨) システムのpythonを使用しないでください。 システムの他の部分と競合しない新しい更新バージョンをインストールしてください。 homebrew パッケージマネージャーを使用して行う方法は次のとおりです:

    • https://brew.sh/ の指示に従って homebrew をインストールします。

    • PATH 環境変数を更新して、システムパッケージより先にhomebrewパッケージを使用するように指定します(デフォルトのシェルとして zsh を使用している場合は、 .bashrc.zshrc に変更します):

      echo "export PATH=/usr/local/bin:/usr/local/sbin:$PATH" >> ~/.bashrc
      
    • .bashrc をリロードして、変更が行われたことを確認します:

      source ~/.bashrc
      
    • pythonのインストール:

      brew install python
      
    • pythonの最新バージョンには pip がバンドルされているため、個別にインストールする必要はありません。 そうでない場合は、pythonをアップグレードします:

      brew update; brew upgrade python
      
  • (オプション) 隔離されたpython環境内にScrapyをインストールします。

    この方法は、上記のOS Xの問題の回避策ですが、依存関係を管理するための全体的なグッドプラクティスであり、最初の方法を補完できます。

    virtualenv は、Pythonで仮想環境を作成するために使用できるツールです。 http://docs.python-guide.org/en/latest/dev/virtualenvs/ のようなチュートリアルを読むことをお勧めします。

これらの回避策のいずれかを行った後、Scrapyをインストールできるはずです:

pip install Scrapy

PyPy

私たちは最新のPyPyバージョンを使用することをお勧めします。 テストされたバージョンは5.9.0です。 PyPy3では、Linuxインストールのみがテストされました。

現在、Scrapyが依存するほとんどの依存コンポーネントには、CPython用のバイナリホイール形式のパッケージがありますが、PyPy用ではありません。 これは、これらの依存関係がインストール中に構築されることを意味します。 OS Xでは、暗号化の依存関係の構築に関する問題に直面する可能性があります。この問題の解決策は こちら で説明されています。 brew install openssl してから、このコマンドが推奨するフラグをエクスポートします(scrapyのインストール時にのみ必要)。 Linuxへのインストールには、ビルドの依存関係のインストール以外に特別な問題はありません。 WindowsでPyPyを使用したScrapyのインストールはテストされていません。

あなたは、 scrapy bench を実行して、scrapyが正しくインストールされていることを確認できます。 このコマンドが TypeError: ... got 2 " "unexpected keyword arguments のようなエラーを出す場合、これはsetuptoolsが1つのPyPy固有の依存関係を選択できなかったことを意味します。 この問題を修正するには、 pip install 'PyPyDispatcher>=2.1.0' を実行します。

トラブルシューティング

AttributeError: 'module' object has no attribute 'OP_NO_TLSv1_1'

Scrapy、Twisted、またはpyOpenSSLをインストールまたはアップグレードした後、トレースバックで以下の例外が発生する場合があります:

[…]
  File "[…]/site-packages/twisted/protocols/tls.py", line 63, in <module>
    from twisted.internet._sslverify import _setAcceptableProtocols
  File "[…]/site-packages/twisted/internet/_sslverify.py", line 38, in <module>
    TLSVersion.TLSv1_1: SSL.OP_NO_TLSv1_1,
AttributeError: 'module' object has no attribute 'OP_NO_TLSv1_1'

この例外が発生する理由は、TwistedのバージョンがサポートしていないpyOpenSSLのバージョンがシステムまたは仮想環境にあるためです。

TwistedのバージョンがサポートするpyOpenSSLのバージョンをインストールするには、 tls 追加オプションでTwistedを再インストールします:

pip install twisted[tls]

詳細は Issue #2473 をご覧ください。