ウェブスクレイピング
ウェブスクレイピング(英: 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つのタブだけが開いている場合、デフォルトではほとんどのブラウザが完全に終了します。
ということらしい。
ということで、環境が作れたので続いて実際に取得する方法を書こうと思います。