no title


import re, time
#pipインストール必須↓
import requests
from bs4 import BeautifulSoup

sleep_time=2 #秒待つ

def URLs(URL):
r = requests.get(URL)
time.sleep(sleep_time)
soup = BeautifulSoup(r.content, "html.parser")
script_json=soup.find('script',id='__NEXT_DATA__').string
result=re.findall(r'(?<=\"Work:)\d+',script_json)
results=(result[i] for i in range(20))
return ("https://kakuyomu.jp/works/"+str(ul) for ul in results)

def title_and_point(URL):
r = requests.get(URL)
time.sleep(sleep_time)
soup = BeautifulSoup(r.content, "html.parser")
# title
json=soup.find('title').string
# point
script_json=soup.find('script',id='__NEXT_DATA__').string
tPoint=re.findall(r'(?<=\"totalReviewPoint\":)\d+',script_json)
rcount=re.findall(r'(?<=\"reviewCount\":)\d+',script_json)
return json, float(format(int(tPoint[-1])/int(rcount[0]),'.2f'))

def main():
#スタート地点の検索ページURL
startURL="https://kakuyomu.jp/search?order=weekly_ranking&serial_status=running&total_character_count_range=custom&total_character_count_min=700000&total_review_point_range=custom&total_review_point_min=100&total_review_point_max=2000"

#最大ページ数
page_max=38

for page in range(1,page_max+1):
uls=URLs(startURL+"&page="+str(page))
for ul in uls:
title, point=title_and_point(ul)
if point>=2.8: #平均評価の下限
# print(title)
# print(ul)
# print(point)
# print('\n')
print(f"{point:.02f} <a href='{ul}' target='_blank'>{title}</a><br>")


#結果表示
main()
お知らせ
実務でも趣味でも役に立つ多機能Webツールサイト【無限ツールズ】で、日常をちょっと便利にしちゃいましょう!
無限ツールズ

 
writening