インストールガイド¶
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 : 非同期通信フレームワーク
- cryptography と pyOpenSSL : さまざまなネットワークレベルのセキュリティ要因に対処
Scrapyがテストされている最小バージョンは次のとおりです。
- Twisted 14.0
- lxml 3.4
- pyOpenSSL 0.14
Scrapyはこれよりも古いバージョンでも動作するかもしれませんが、テストされていないため動作の保証はされません。
パッケージのいくつかは、プラットフォーム別に追加のインストール手順が必要な非Pythonパッケージに依存しています。プラットフォーム別のインストール を確認してください。
依存関係に関連する問題が発生した場合は、以下のインストール手順を参照してください。
仮想環境を使用する(推奨)¶
要約:どんなプラットフォームでも仮想環境内にScrapyをインストールすることをお勧めします。
Pythonパッケージは、グローバル(システム全体)またはユーザごとにインストールできますが、Scrapyのシステムをそのようにインストールすることはお勧めしません。
そのかわり、いわゆる「仮想環境」( virtualenv )内にScrapyをインストールすることをお勧めします。virtualenvを使うと、すでにインストールされているPythonパッケージと競合することなく、pip
で( sudo
などを使わずに)パッケージをインストールできます。
仮想環境を使い始めるには、virtualenvのインストール手順 を参照してください。virtualenvをグローバルにインストールする(こちらはグローバルにインストールしたほうが役に立ちます)には、以下を実行する必要があります。
$ [sudo] pip install virtualenv
virtualenvの作成方法については、 ユーザーガイド を参照してください。
注釈
LinuxまたはOS Xを使用する場合、 virtualenvwrapper はvirtualenvを作成するための便利なツールです。
virtualenvを作成したら、他のPythonパッケージと同様に、 pip
でscrapyをインストールすることができます(事前にインストールする必要のあるPython以外の依存パッケージについては、 プラットフォーム固有のガイド を参照してください)。
virtualenvはデフォルトでPython 2、またはPython 3を使用するように作成できます。
- Python 3の場合は、Python 3のvirtualenv内にScrapyをインストールしてください。
- また、Python 2の場合は、Python 2のvirtualenv内にScrapyをインストールしてください。
プラットフォーム別のインストール¶
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-dev
はlxml
に必要libssl-dev
とlibffi-dev
はcryptography
に必要
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.