【PythonでWebスクレイピング】初めてのプログラムがスクレイピング〜環境設定〜

f:id:kisokoji:20171106083111j:plain:w500

ウェブスクレイピング

ウェブスクレイピング(英: 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()

f:id:kisokoji:20171106100014p:plain:w400

確認する。

$ (myenv)babanoMacBook-puro:myenv baba$ python sample.py


Chromeが自動起動してPythonの公式ページが表示される。

最後に、ブラウザウィンドウを閉じます。cloce メソッド代わりにquit メソッドを呼び出すこともできます。quit メソッドはブラウザ全体が終了しますが、 close メソッドは1つのタブが閉じます。しかし、1つのタブだけが開いている場合、デフォルトではほとんどのブラウザが完全に終了します。

ということらしい。

ということで、環境が作れたので続いて実際に取得する方法を書こうと思います。