pythonでWebスクレイピングする方法

pythonでウェブページ(ホームページ)にアクセスして,必要な文字列だけ抽出する方法です.いわゆる Web scraping です.

いくつか方法がありますが,今回は python で lxml モジュールを使いました.

サンプルコード

サンプルコードです.python 3 で動作します.

実行すると,www.kernel.orgにアクセス,Linuxの最新バージョンを抽出,print で結果を表示します.

#!/usr/bin/env python3

import requests
import lxml.html

url = 'http://www.kernel.org/'
response = requests.get(url)

html = lxml.html.fromstring(response.content)

htmltag = html.xpath("//tr[2]/td[2]/strong")

for e in htmltag:
    print(e.text)

エラーが出る場合は lxml モジュールを追加でインストールしてください

$ pip install lxml 

解説

6行目から7行目で,Webサーバにアクセスして HTMLをダウンロードします.

9行目で, lxml 使ってHTMLを解析します.解析結果は変数html に保存されています.

xpath の求め方

抽出する文字列は xpath で指定します.上記のサンプルコードなら "//tr[2]/td[2]/strong" が xpath となります.

xpath は,firefox などのWebブラウザ経由で調べるのが簡単です.

firefox を使う場合は

  1. firefox で該当ページにアクセス
  2. 抽出したい要素(文字列)をマウスで選択.
  3. 右クリックして「要素を調査」を選択
  4. 「インスペクタ」が起動する
  5. 「インスペクタ」のツリービューに表示されている要素を右クリック
  6. 「コピー」の「XPath」をクリック

これで xpathクリップボードにコピーされます.