リモートワーク進んでいますか?
家族がいたりすると、仕事中に
とあるランキングを確認するのも
躊躇してしまうかもしれません。

そんな方々に朗報です。
今日はそんな悩みを解消する
プログラムのご紹介です。


解説動画はこちら




コードはこちら
import requests
from bs4 import BeautifulSoup
import time

# 月間ランクページのURL
base_url = 'https://www.dmm.co.jp/digital/videoa/-/ranking/=/term=monthly/type=actress/page={0}/'
domain = 'https://www.dmm.co.jp'

def get_data(response,result):
    soup = BeautifulSoup(response.content,'lxml')
    div = soup.find('div',class_='area-rank')
    tds = div.find_all('td')
    for td in tds:
        span = td.find('span',class_='rank')
        rank = int(span.text) if span is not None else 0
        img = td.find('img')
        src = img.get('src') if img is not None else ''
        p = td.find('p')
        name = p.text if p is not None else ''
        link = domain + p.a.get('href') if p is not None else ''
        data = td.find('div',class_='data')
        num = int(data.text.split('出演作品数:')[1]) if data is not None else 0
        tmp = [rank,name,link,num,src]
        result.append(tmp)
    return result

result_list = []
for i in range(1,6):
    url = base_url.format(i)
    #print(url)
    res = requests.get(url)
    time.sleep(5)
    result_list = get_data(res,result_list)

このコードのざっくり解説をすると
サイトにアクセスしてHTMLを取得し
文字データの取得を行います。

そして取れたデータを出力してみると

# ランクで出力
for rank,name,link,num,src in sorted(result_list,reverse=False,key=lambda x:x[0]):
    print('{0:03}\t{1}\t{2}'.format(rank,name,num))

001	深田えいみ	291
002	美谷朱里	629
003	波多野結衣	2692
004	蓮実クレア	1207
005	枢木あおい	495
006	篠田ゆう	1178
007	稲場るか	234
008	あおいれな	822
009	上原亜衣	1193
010	跡美しゅり	635
011	今井夏帆	211
012	八乃つばさ	446
013	星奈あい	644
014	美園和花	121
015	大槻ひびき	1820
016	三上悠亜	144
017	葵つかさ	346
018	宮沢ちはる	129
019	大浦真奈美	243
020	AIKA	901

こんな感じになります。
ブラウザーの履歴には残らず、文字だけ出るので
家族にバレずに安全にランキングを確認する事が出来ます。


逆に
顔を見ないと分かりま10という人は
こちらのコードぞ実行してもらえば
HTMLとしてJupyterNotebook上で
ランキングを確認する事ができます。
from IPython.display import HTML
h_text = ''
for rank,name,link,num,src in result_list:
    if rank>20:
        break
    text = ''
    h_text+= text.format(rank,name,num,src)
h_text += '
{0:03}{1}{2}本
' HTML(h_text)

という感じで、仕事には
全くもって役に立たないプログラムです。

皆さんも気分転換い試してみては
いかがでしょうか?

今日はこれまでです
それでは。