何個か 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)
今回はクックパッドで練習しましたが、ヘタな Web サービスで練習すると逮捕されかねないので*1、Web サービス選びには注意が必要です。
*1:某図書館の事件みたいに