インストール ガイド¶
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パッケージに依存しています。 プラットフォーム固有のガイド で確認して下さい。
これらの依存関係に関連する問題が発生した場合は、それぞれのインストール手順を参照してください:
仮想環境の使用(推奨)¶
一言でいうと、私たちは全てのプラットフォームで仮想環境内にScrapyをインストールすることをおすすめします。(訳注: python3.3以降の場合はvenvがあります。詳しくはPythonドキュメント/Python標準ライブラリ/venv -- 仮想環境の作成 https://docs.python.org/ja/3/library/venv.html 参照)
Pythonパッケージは、グローバル(システム全体)またはユーザー空間にインストールできます。 システム全体にScrapyをインストールすることはお勧めしません。
代わりに、いわゆる仮想環境(virtualenv)内にScrapyをインストールすることをお勧めします。 Virtualenv(訳注:python3ならvenv)を使用すると、既にインストールされているPythonシステムパッケージと競合(システムツールやスクリプトの一部が破損する可能性があります)することなく、通常は(sudo
などを使用せずに) pip
でパッケージをインストールできます。
仮想環境の使用を開始するには、 virtualenv installation instructions を参照してください。 グローバルにインストールする(グローバルにインストールしないと役に立ちません)には、次を実行する必要があります:
$ [sudo] pip install virtualenv
virtualenvの作成方法については、この user guide を確認してください。
注釈
あなたがLinuxまたはOS Xを使用している場合、 virtualenvwrapper はvirtualenvを作成するのに便利なツールです。
virtualenvを作成したら、他のPythonパッケージと同様に pip
を使用してその中にScrapyをインストールできます(事前にインストールする必要がある非Python依存関係については、以下の プラットフォーム別ガイド を参照してください)。
Python virtualenvは、デフォルトでPython 2、またはデフォルトでPython 3を使用するように作成できます。
Python3でScrapyをインストールする場合は、Python3のvirtualenv内にScrapyをインストールします。
また、Python2でScrapyをインストールする場合は、Python2 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ディストリビューションと互換性があります。 しかし、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-dev
、zlib1g-dev
、libxml2-dev
、libxslt1-dev
は、lxml
の為に必要です。libssl-dev
とlibffi-dev
はcryptography
の為に必要です。
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 をご覧ください。