Python と BeautifulSoup でスクレイピング入門

何個か Web アプリを作ったけど、そういえば、まだスクレイピングをやったことがありませんでした。ふり返っても、サービス内で処理が完結するものや、外部 API を呼び出すものばかり。今考えている Web サービスを実装するには、どうやらスクレイピングが必要っぽいので、Python で練習してみました。

初めてのスクレイピングということなので、有名どころの BeautifulSoup を使ってみます。クックパッドのレシピ情報を抽出するサンプルを書いてみました。

# -*- coding:utf-8 -*-

import urllib
import BeautifulSoup

# HTML を取得
html = urllib.urlopen("http://cookpad.com/recipe/1069312").read()

# 解析用の BeautifulSoup オブジェクトを作成
soup = BeautifulSoup.BeautifulSoup(html)

# レシピのメイン部を取得
recipe_main = soup.find("div", attrs={"id": "recipe-main"})

# レシピのタイトルを取得
recipe_title = recipe_main.find("h1", attrs={"class": "recipe-title fn"})
print(recipe_title.string)

# 材料を取得
for ingredient in recipe_main.findAll("div", attrs={"class": "ingredient_name"}):
    print(ingredient.string)

実行結果がこちら。
f:id:griefworker:20110601220755p:image

今回はクックパッドで練習しましたが、ヘタな Web サービスで練習すると逮捕されかねないので*1、Web サービス選びには注意が必要です。

*1:某図書館の事件みたいに