武器商人@Pythonのブログ

Pythonを好んで使っているプログラマです。Pythonこそが最強のプログラミング言語だと思っています。Pythonは使いやすいです。Pythonは書きやすいです。Pythonは読みやすいです。Pythonはパワフルです。Pythonは一貫性があります。Pythonが好きです。

AmazonのサイトをWebスクレイピングしてランキングを取得

スポンサーリンク

はじめに

Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-

AmazonProduct Advertising APIではランキング情報を取得出来ないので、Amazonのサイトからランキングを取得しようと考えました。楽天ウェブサービスAPIでは、商品のランキングが取れるのにね。。。

BeautifulSoupを使ってAmazonのサイトをウェブスクレイピング

サンプルコード

# coding: utf-8
import requests
import time
from BeautifulSoup import BeautifulSoup

def scrape_title(htmltext):
    l_title = []
    soup = BeautifulSoup(htmltext)
    for el in soup.findAll("div",{"class":"zg_itemRow"}):
        title = el.findAll("div",{"class":"zg_title"})[0].findAll("a")[0].text
        try:
            l_title.append(title.strip().decode('utf8'))
        except:
            l_title.append(title.strip())   
    return l_title

if __name__ == "__main__":
    url = "http://www.amazon.co.jp/gp/bestsellers/books"
    
    htmltext = requests.get(url).text
    ret_list = scrape_title(htmltext)

    for count in range(0,20):
        print "No." + str(count+1).rjust(2),ret_list[count]

実行結果

>>> ================================ RESTART ================================
>>>
No. 1 おやすみ、ロジャー 魔法のぐっすり絵本
No. 2 MEKURU VOL.07 (小泉今日子)
No. 3 OCEAN TOKYOのメンズヘアBOOK
No. 4 TOEICテスト公式問題集 新形式問題対応編
No. 5 活学新書 ポケット修養訓
No. 6 一流の育て方―――ビジネスでも勉強でもズバ抜けて活躍できる子を育てる
No. 7 あの日
No. 8 嫌われる勇気―――自己啓発の源流「アドラー」の教え
No. 9 天才
No.10 幸せになる勇気―――自己啓発の源流「アドラー」の教えII
No.11 猪吉とたま (バーズ エクストラ)
No.12 112日間のママ
No.13 朝長美桜 ファースト写真集 日向
No.14 F.S.S. DESIGNS 5 LITTER.pict
No.15 Ice Jewels(アイスジュエルズ)Vol.02~フィギュアスケート・氷上の宝石 ~特集:羽生結弦「330.43の真実」 (KAZIムック) (KAZI MOOK)
No.16 2016 プロ野球オール写真選手名鑑 (NSK MOOK)
No.17 ハーバードでいちばん人気の国・日本 (PHP新書)
No.18 七つの会議 (集英社文庫(日本))
No.19 ドラゴンクエストX いにしえの竜の伝承 オンライン 公式ガイドブック 氷の領界+職人の極意編 バージョン3.2[後期] (SE-MOOK)
No.20 この国のかたち〈1〉 (文春文庫)
>>>

ウェブスクレイピングはクソ面白いw

PythonによるWebスクレイピング

PythonによるWebスクレイピング

WebScrapingについては、解説されているサイトや書籍がいろいろありますが、まとまった情報源は少ないです。また、PerlRubyPHPのサンプルコードはあるんだけれど、Pythonのものがなかなか見つからない。そんなとき、待望の書籍が発売されたので、是非お手にしてみて下さい。