インストールガイド

Scrapyのインストール

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

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

conda を使用してScrapyをインストールするには、次のコマンドを実行します。

conda install -c conda-forge scrapy

Pythonパッケージのインストールに慣れている場合は、PyPIからScrapyとその依存パッケージをインストールすることができます。

pip install Scrapy

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

また、virtualenv でScrapyをインストールして、システムパッケージとの衝突を避けることを強くお勧めします。

For more detailed and platform specifics instructions, as well as troubleshooting information, read on.

お役立ち情報

Scrapyは純粋なPythonで書かれており、いくつかの重要なPythonパッケージに依存しています。

  • lxml : 効率的なXMLとHTMLのパーサー
  • parsel : lxmlの上に書かれたHTML / XMLデータ抽出ライブラリ
  • w3lib : URLとWebページのエンコーディングを扱うための多目的ヘルパー
  • twisted : 非同期通信フレームワーク
  • cryptographypyOpenSSL : さまざまなネットワークレベルのセキュリティ要因に対処

Scrapyがテストされている最小バージョンは次のとおりです。

  • Twisted 14.0
  • lxml 3.4
  • pyOpenSSL 0.14

Scrapyはこれよりも古いバージョンでも動作するかもしれませんが、テストされていないため動作の保証はされません。

パッケージのいくつかは、プラットフォーム別に追加のインストール手順が必要な非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ディストリビューションと互換性があります。Ubuntuの古いバージョンもサポートしてはいますが、Ubuntu 14.04のようにTLS接続の潜在的な問題があります。

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-dev, zlib1g-dev, libxml2-dev, libxslt1-devlxml に必要
  • libssl-devlibffi-devcryptography に必要

Python 3にscrapyをインストールする場合は、開発用パッケージも必要です。

sudo apt-get install python3 python3-dev

その後、 virtualenv の中で pip を使ってScrapyをインストールすることができます。

pip install scrapy

注釈

Debian Jessie (8.0) 以上でScrapyをインストールする場合も、同様のパッケージを使用することができます。

Mac OS X

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

xcode-select --install

pip がシステムパッケージを更新しないようにする 既知の問題 があります。この問題は、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ではバイナリのwheelを使用できますが、PyPyでは使用できません。OS Xでは、暗号化の依存関係を構築する問題が発生する可能性があります。この問題の解決策は、 ここ に書かれているように、 brew install openssl してからこのコマンドが推奨するフラグをエクスポート(Scrapyをインストールするときのみ必要)することです。Linuxへのインストールには、依存パッケージをインストールする以外に特別な問題はありません。PyPyをWindowsにインストールすることはテストされていません。

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

Troubleshooting

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

After you install or upgrade Scrapy, Twisted or pyOpenSSL, you may get an exception with the following traceback:

[…]
  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'

The reason you get this exception is that your system or virtual environment has a version of pyOpenSSL that your version of Twisted does not support.

To install a version of pyOpenSSL that your version of Twisted supports, reinstall Twisted with the tls extra option:

pip install twisted[tls]

For details, see Issue #2473.