kakaku.comのカテゴリランキング情報収集方法

 以前、amazon.co.jpのランキング情報取得方法についてメモを取っていましたが、今回はkakaku.comのランキング情報も同じように取得してみたいと思います。


kakaku.comでランキング情報を収集してみる

さて、前置きは置いておいて早速やってみましょう。
今回は、kakaku.comのNASカテゴリランキングページのランキング情報を取得してみます。こちらのページですね。


HTMLのソースコードを確認してみると、こんな感じです。

構造を見ていくと、
こちらのように、各順位ごとに<div class="rkgBox noGraph withReview">ないし、<div class="rkgBox noGraph">で構造が作られていることがわかるので、find_allでこの属性を取り出します。こいつを、1要素=eleとしてbeautifulsoupで取り出して、各々の中身をget_infoで解析してやるという流れになります。

各要素の中身は、
といった感じになっており、<span class="num">にランキング、<span class="rkgBoxNameMaker">にメーカー名、<span class="rkgBoxNameItem">に製品名、<span class="price">に最低価格が記載されていますので、get_infoの中で取り出してやります。
取り出したデータは、pandaでcsvファイルとして保存します。

コードはこんな感じ。

#!/usr/bin/python

import urllib3
from bs4 import BeautifulSoup
import time
import datetime
import pandas as pd

uri_attention = 'https://kakaku.com/pc/nas/ranking_7731/hot/'
uri_sales = 'https://kakaku.com/pc/nas/ranking_7731/'


info = []

def fetch_contents(url):
    #obtain each page as html.
    http = urllib3.PoolManager()
    html = http.request('GET', url)
    soup = BeautifulSoup(html.data, 'lxml')
    time.sleep(2)
    
    return soup

def get_info(ele):
    #  pickup rank, title, URL, picture URL, price as dictionary style.

    info = {
            "rank": ele.find("span", class_="num").string.strip(),
            "maker": ele.find("span", class_="rkgBoxNameMaker").string.strip(),
            "model": ele.find("span", class_="rkgBoxNameItem").string.strip(),
            "price": ele.find("span", class_="price").string.strip()
            }
    return info


url = uri_sales
soup = fetch_contents(url)

for ele in soup.find_all("div", class_=["rkgBox noGraph", "rkgBox noGraph withReview"]):
    info.append(get_info(ele))
            
today = datetime.datetime.now().strftime('%Y.%m.%d')

#output as csv by using panda.
df = pd.DataFrame(info)
df.to_csv('KakakuSales' + str(today) + '.csv',encoding='utf-8_sig')

実行すると、このような出力が得られます。

これで、kakaku.comで気になるガジェットの最安値状況を簡単に把握することができますね。

注意点

今回、セールスランキングを対象としましたが、kakaku.comには、注目ランキングといった別のランキングもあります。目的によって使い分けるといいと思います。

まとめ

amazon.co.jpに引き続き、価格を調べる際の第一候補、kakaku.comのランキング情報を取得するためのスクリプトを作成してみました。やり方さえわかってしまえば、他のサイトのランキングの仕組みにも応用可能なものですので、興味を持たれた方はぜひ挑戦してみてください。今回作成したスクリプトはGoogle Driveに保存してありますので、ご自由にお使いください。ご使用される場合は、一言コメントいただけますと励みになります!

コメント

このブログの人気の投稿

VPNでNASにリモートアクセス!QTS5.0でWireGuardを試す

レトロゲームステーションに!QNAP TS-251D

NASに保存したファイルを便利に検索する方法