【Python】sudo権限のないLinuxサーバーでwebスクレイピング環境構築
今回は、sudo権限のないレンタルサーバーでpythonによるwebスクレイピング環境構築です。
GUI環境ではないので、javascriptページも読み込めるようにヘッドレスブラウザのPhantomJSを使います。
■環境
・conohaサーバー(conoha wingのベーシックプラン※一番下のやつ)
・python
■ライブラリー
BeautifulSoup:スクレイピングライブラリ
PhantomJS:ヘッドレスブラウザ
Selenium:ブラウザの自動操作を行うツール
1.PhantomJSのインストール
conohaにログイン、まずは適当なフォルダを作成して、phantomJSをダウンロードして解凍
phantomJSの最新版のURLはここから。Linux 64-bitを選択。
https://phantomjs.org/download.html
$ mkdir pythonlibrary
$ cd pythonlibrary/
$ wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
$ tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
$ mv phantomjs-2.1.1-linux-x86_64 phantomjs
パスを通す
$ echo 'export PATH=/home/c●●●/pythonlibrary/phantomjs/bin:$PATH' >> ~/.bash_profile
$ source ~/.bash_profile
$ echo $PATH
phantomJSのバージョン確認ができていたら成功
$ phantomjs -v
2.1.1
2. ライブラリー置き場を作成して、各ライブラリーインストール
デフォルトでpip install すると、権限がない場所を参照するのでエラーになってしまう。
権限配下を参照するように設定。
PYTHONPATHの設定。さっき作ったフォルダにパス通す。これでimportでデフォルトで参照される
$ echo 'export PYTHONPATH=/home/c●●/pythonlibrary:$PYTHONPATH' >> ~/.bash_profile
$ source ~/.bash_profile
必要なライブラリーのインストール。フォルダ指定をする。
$ pip install selenium -t ~/pythonlibrary
$ pip install lxml -t ~/pythonlibrary/
$ pip install beautifulsoup4 -t ~/pythonlibrary/
3. 試しにwebスクレイピング
#!/usr/bin/env python
# coding: utf-8
from pprint import pprint
from selenium import webdriver
from bs4 import BeautifulSoup
import time
driver = webdriver.PhantomJS()
driver.get("https://www.google.co.jp/")
time.sleep(2)
soup = BeautifulSoup( driver.page_source, 'lxml')
pprint(soup)
4. 文字コードエラーになった場合
'ascii' codec can't encode characters
日本語が書かれたページを出力するときはエラーになります。
下記で解決。
$ echo 'export PYTHONIOENCODING=utf-8' >> ~/.bash_profile
$ source ~/.bash_profile