
ウェブスクレイピング
ウェブスクレイピング(英: Web scraping)とは、ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと。 ウェブ・クローラーあるいはウェブ・スパイダーとも呼ばれる。
pythonでどうやって実現できるのか?
環境
MacOS High Sierra
Python 3.6.3
Pythonの仮想環境の作成
venvモジュール
pyvenvスクリプトはPython3.6で非推奨となってる。python3 -m venvで仮想環境を動かすPythonインタープリタの取り違えの可能性を防ぎやすくしている。
ということで、仮想環境を作るにはvenvコマンド
今回「mySite」というディレクトリ内に仮想環境を作ることにします。
$ mkdir mySite $ cd mySite $ python3 -m venv myenv
mySite/myenvにファイルが作成される。
仮想環境を有効化する
$ cd myenv $ source bin/activate $ (myenv)babanoMacBook-puro:myenv baba$
Seleniumを使いたい
Seleniumとは、Webブラウザを使ってWebアプリケーションをテストするツールです。 この「Webブラウザを使って」というのが非常に大きなポイントで、人が手でWebブラウザを操作する代わりにSeleniumがWebブラウザを操作してくれるのです。
「python スクレイピング」とググると大体「BeautifulSoup」が出て来る。
けど、「Selenium」でやってみる。
Seleniumのインストール
$ pip install selenium
Collecting selenium
Downloading selenium-3.7.0-py2.py3-none-any.whl (935kB)
100% |████████████████████████████████| 942kB 872kB/s
Installing collected packages: selenium
Successfully installed selenium-3.7.0
ChromeのWebDriverのインストール
Chromeドライバーを使うのでまずはChromeDriverのダウンロード。
myenv/binに解凍したchromedriverを配置する。
しなくてもどっかにあれば動く気もする・・・。
動作テスト
sample.py
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# Chrome用のドライバを使う
driver = webdriver.Chrome()
# Pythonのサイトにアクセス
driver.get("http://www.python.org")
# タイトルに「Python」という単語があることを確認するためのアサーション
assert "Python" in driver.title
#`q`というnameを持つ要素の取得
element = driver.find_element_by_name("q")
# キーの送信
element.clear()
element.send_keys("pycon")
element.send_keys(Keys.RETURN)
# ページのサブミットの状態
assert "No results found." not in driver.page_source
# ブラウザを閉じる
driver.close()

確認する。
$ (myenv)babanoMacBook-puro:myenv baba$ python sample.py
Chromeが自動起動してPythonの公式ページが表示される。
最後に、ブラウザウィンドウを閉じます。cloce メソッド代わりに
quitメソッドを呼び出すこともできます。quit メソッドはブラウザ全体が終了しますが、 close メソッドは1つのタブが閉じます。しかし、1つのタブだけが開いている場合、デフォルトではほとんどのブラウザが完全に終了します。
ということらしい。
ということで、環境が作れたので続いて実際に取得する方法を書こうと思います。