requests-htmlで作成してみようと思ったらスクロールの仕方がわからなかったのでrequest見てたらJSONだったので
JSON抽出、dataframeで結合、ランキングに変更
import json import time import pandas as pd import requests # タイトルの50音順リスト title = [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 3, 5], [1, 2, 3, 4, 5], [1, 2, 3]] # URL生成 urls = [] for i, j in enumerate(title, start=1): for k in j: urls.append( 'https://anime.dmkt-sp.jp/animestore/rest/WS000108?workTypeList=anime&length=300&mainKeyVisualSize=2&initialCollectionKey={}&consonantKey={}'. format(i, k)) print(urls) headers = {"content-type": "application/json"} dfs = [] for url in urls: r = requests.get(url, headers=headers) data = r.json() dfs.append(pd.io.json.json_normalize(data['data']['workList'])) time.sleep(3) # 結合 df = pd.concat(dfs) # タイトル数 print(len(df)) # お気に入り数でランキング df['rank'] = df['workInfo.favoriteCount'].rank(ascending=False, method='min') # ランキングでソート df.sort_values(['rank'], inplace=True) # indexをランキングに変更 df.set_index('rank', inplace=True) df_rank = df.loc[:, ['workInfo.favoriteCount', 'workInfo.workTitle']] print(df_rank)