LoginSignup
5
9

More than 5 years have passed since last update.

Python + PhantomJSを使ったWebスクレイピング ①環境構築

Posted at

概要

とある仕事でpythonでWebスクレイピング用のスクリプトを作ることになり、pipを初めて触ることになったので備忘録としてまとめます。

手順

前提

  • AWS EC2
  • python 2.7.6インストール済み
  • 細かい設定は今回は端折るので基本、sudoコマンドで実行します
  • 作業は~(ホーム)で実行
  • PhantomJSを利用

pipのインストール

ダウンロード

以下のコマンドでpipインストール用のpythonファイルをダウンロードします。

command
wget "https://bootstrap.pypa.io/get-pip.py"

screencapture- 2017-12-09 21.51.40.png

ダウンロードしたファイルを実行します。

command
sudo python get-pip.py

screencapture- 2017-12-09 21.51.52.png

※以下のワンライナーでも同様にインストール可能です。

command
curl -kL https://bootstrap.pypa.io/get-pip.py | python

確認

以下のコマンドでバージョン情報が表示されればインストール完了です。

command
pip --version

screencapture- 2017-12-09 21.53.53.png

使い方

今回はpipにてseleniumをインストールして使ってみます。

エラー回避

しかし、今のままでは以下のコマンドでinstallしようとすると、エラーが出ます。

command
sudo pip install selenium

screencapture- 2017-12-10 14.03.14.png

これはインストール先のusr/local/bin$PATHに含まれていないので、pipコマンドが認識されていません。

$PATHに追加することで対処可能ですが、今回は以下のコマンドで物理的に移動して対処します。

command
sudo cp /usr/local/bin/pip /usr/sbin/

確認

これでもう一度以下のコマンドを実行すると、正常にインストールが完了します。

command
sudo pip install selenium

screencapture- 2017-12-10 14.02.45.png

実装

以下のコードを適当なファイルに記述してください。

sample.py
from selenium import webdriver
import time

browser = webdriver.PhantomJS()
url = "http://google.com"
browser.get(url)
time.sleep(3)
print(browser.title)

そして、以下のコマンドで実行

command
python sample.py

しかし、以下のようなエラーが表示されます。

error
[ec2-user@adminserver sample]$ python sample.py
Traceback (most recent call last):
  File "sample.py", line 4, in <module>
    browser = webdriver.PhantomJS()
  File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/phantomjs/webdriver.py", line 52, in __init__
    self.service.start()
  File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/common/service.py", line 81, in start
    os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'phantomjs' executable needs to be in PATH.

screencapture- 2017-12-11 10.36.46.png

これはPhantomJS自体がインストールされていないのが原因かと思われるので、別途PhantomJSもインストールする必要があります。

PhantomJSのインストール

基本的には以下のコマンドを順番に流すことでインストールは完了します。

yum関連のインストール

command
sudo yum install fontconfig freetype freetype-devel fontconfig-devel libstdc++ 

screencapture- 2017-12-12 11.10.27.png

圧縮ファイルの取得

command
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2

screencapture- 2017-12-12 11.15.30.png

解凍

command
bzip2 -d phantomjs-2.1.1-linux-x86_64.tar.bz2
sudo tar -xvf phantomjs-2.1.1-linux-x86_64.tar

シンボリックリンクの作成

command
sudo ln -sf ~/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/bin/phantomjs

確認

command
phantomjs -v

screencapture- 2017-12-12 11.50.08.png

もう一度、以下のコマンドを実行

command
python sample.py

screencapture- 2017-12-12 11.52.28.png

無事に取れましたね!!

終わりに

これでpython + PhantomJSでのスクレイピングの準備は出来たので、あとはガリガリコーディングをしていくだけですね♪

快適なスクレイピング生活を!

5
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
9