私は蛇になりたい。Python3でWEBスクレイピングを作ってみた

N825_yamakagamihebi

 

「蛇になりたい‥」 

 
突如、胸の奥からヘビーな感情が湧き上がってきました。
しかし、現実問題、ヒトとして産声をあげた者が、後天的に蛇として生きるなんて聞いたことがありません。
 
、、、ということで
今回は、蛇(Python)を触ってこの衝動を治めようと思います。
 
 

〜Python3〜

今回はPython3.xを使用することにしました。
将来性をみてPython2.xよりもPython3に移行する流れがあるみたいですし、初学ならPython3でいいと思いました。
 
 

〜インストール(Mac)〜

MacでしたらPython2.x系が初期から入っているかと思います。
確認する方法は、ターミナルを起動して python —version と打ち込んでもらえれば分かります。
 
今回は2.x系ではなく3.x系を使用しますので、インストールが必要となります。
 
Python 3.xを入れるにはいくつかの方法があるみたいですが、
僕はDownload Python のOS X用のインストーラを使って開発環境を整えました。
 
注:/usr/local の実体によってはうまくリンクされないかもしれません
そんなときはターミナルに source ~/.bash_profile と打ち込めばうまくいくかと思います。
 
 

確認 

ターミナルを起動して下記を打ち込む
$python3 --version
「Python3.x」などとでればうまくいっています。
 
 

〜パッケージ管理ツール pip3〜

Pythonではパッケージ管理ツールとして pip3 というものがデフォルトで入っています。rubyのgem、perlのcpan的な感じです。
 
ターミナルで
$pip3 list
と打ち込めば、パッケージがリストで表示されます。
 
 
パッケージをインストールするときは
$pip3 install パッケージ名
 
アンインストールするときは
$pip3 uninstall パッケージ名
 
 
 

〜スクレイピングを作ってみる〜

とりあえず、簡単にスクレイピングを動かしてみて感動してみましょう。
 
まずは作業をしたいディレクトリへ移動
$cd 作業ディレクトリ
 
そこにフォルダを作成・移動
$mkdir フォルダ名
$cd フォルダ名
  
main.py ファイルを作成
$touch main.py
 
ターミナルから pip3 にパッケージをインストール
$pip3 install cssselect
$pip3 install lxml
$pip3 install selenium
 
 
あとは main.py に下記をコピペでOK
main.py
# パッケージ読み込み
import lxml.html

from selenium import webdriver


# スクレイピング先のサイト(今回はゴリラ)
target_url = 'http://www.s-arcana.co.jp/blog/2016/03/24/3051'

# JSを回避
driver = webdriver.PhantomJS()

driver.get(target_url)

root = lxml.html.fromstring(driver.page_source)

# 指定したURL先のどの部分を抜き出すかを指定
links = root.cssselect('#content h1')

for link in links:
    # ファイル書き込み
    content = str(link.text)

    text_write = open('write.txt', 'w')

    text_write.write(content + '\n')

    text_write.close()
    
    # ターミナルへの出力テスト
    print(content)
 
 
そして、とうとうPythonを起動!!!(ターミナルから)
$python3 main.py
 
 起動後に、write.txtが作られ、タイトルが出力されていれば成功です!!!!
 
 
 

さいごに

いかがでしたか??少しは蛇になりたい欲求は治まったのではないでしょうか。
 
ぼくは治りませんでしたが、Pythonを初めて調べて動かしてみて“綺麗に書ける”と言われている意味が少しわかった気がします。
Pythonならわずか数行で簡単にスクレイピングがつくれてしまうのも大きな魅力ですね。
 
では、素敵な蛇(Python)ライフを!!
 
〜〜参考文献〜〜
http://qiita.com/beatinaniwa/items/72b777e23ef2390e13f8
 
 
 
おわり