##概要
Cloud9上にクローラーを作る環境を構築しました。
作った環境は以下の通りです。
(2017/9/26時点)
- Ubuntu 14.04(OSはCloud9で設定されます)
- Python 3.5.2
- Scrapy 1.3.3
- Selenium 3.4.1
- beautifulsoup 4.6.0
- lxml 3.7.3
- phantomjs 2.1.7
やったことを簡単に以下に記載します。
- Cloud9のアカウント登録
- Pythonのバージョンアップ
- Scrapyインストール
- Seleniumインストール
- Beautiful Soupインストール
- phantomjsインストール
##Cloud9のアカウント登録
詳しく解説しているサイトがあるので省略。
Workspaceを「Blank」で作ると、Python3系のバージョンが「3.4」だったので、
「Blank」ではなく「Python」としました。
##Pythonのバージョンアップ
まずはPythonのバージョンを2.7から3.5.2にします。
バージョンアップについては以下の記事を参考にしました。
若干、手順と違ったのは、権限関係で「sudo」つけないといけないくらいです。
「/usr/bin/」配下のファイルを見ると、Python3.6はないみたいですね。
(Cloud9の環境がUbuntu14.04なんだけど、Python3.6に対応してないのかな。)
##Scrapyのインストール
ここでハマりました。ハマることなんてないと思っていたので誤算でした。
pipでscrapyをインストールしようとすると正常に完了しませんでした。
その後、pipが壊れてしまい、pipコマンドを打つと以下のようなエラーが出るようになってしまいました。
Traceback (most recent call last):
File "/usr/bin/pip", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/local/lib/python3.5/dist-packages/pkg_resources/__init__.py", line 72, in <module>
import packaging.requirements
File "/usr/local/lib/python3.5/dist-packages/packaging/requirements.py", line 59, in <module>
MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker")
TypeError: __call__() missing 1 required positional argument: 'name'
2個目のエラーの原因が「appdirsがないよ」ということだったので、
Scrapyのインストール前に「appdirs」をインストールしておきました。
なぜかそれだけでもダメで、事前に「lxml」も入れておくとうまくいきました。
$ sudo pip install appdirs
$ sudo pip install lxml
$ sudo pip install scrapy
上記の順番でコマンド打てば無事にインストールできました。
インストール済のパッケージをチェックしましたが、「appdirs」「lxml」しか増えなかったので、これらが影響してたと思います。
pipよりanacondaをオススメしている記事を見かけるので、anacondaについても調べておこうと思います。
##Seleniumのインストール
$ sudo pip install selenium
ちゃんとインストールされたか確認。
$ pip show selenium
上記のコマンドを打つと、以下のようになります。
ちゃんとpython3.5配下にインストールされているのでOK。
---
Name: selenium
Version: 3.4.1
Location: /usr/local/lib/python3.5/dist-packages
Requires:
##Beautiful Soupのインストール
$ sudo pip install beautifulsoup4
こちらも同様に以下のコマンドを打ちます。
$ pip show beautifulsoup4
すると、
---
Name: beautifulsoup4
Version: 4.6.0
Location: /usr/local/lib/python3.5/dist-packages
Requires:
となり問題ないことが確認できました。
##phantomjsのインストール
$ sudo npm install -g phantomjs
以上