kakaku.comのカテゴリランキング情報収集方法
以前、amazon.co.jpのランキング情報取得方法についてメモを取っていましたが、今回はkakaku.comのランキング情報も同じように取得してみたいと思います。
kakaku.comでランキング情報を収集してみる
さて、前置きは置いておいて早速やってみましょう。
今回は、kakaku.comのNASカテゴリランキングページのランキング情報を取得してみます。こちらのページですね。
今回は、kakaku.comのNASカテゴリランキングページのランキング情報を取得してみます。こちらのページですね。
こちらのように、各順位ごとに<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ファイルとして保存します。
取り出したデータは、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で気になるガジェットの最安値状況を簡単に把握することができますね。
コメント
コメントを投稿