僕は、定期的にAmazonの本の和書総合ランキングを見て、気になった本があったらチェックするようにしている。
今日も久々にチェックしてみたら、なんと、81位ではあるが、あの、「嫌われる勇気」がランクインしていた。
しかもそのレビュー数が異常で、24759なんてレビュー数、見たことない。もっとも、ランキングやレビュー数や、高評価が必ずしもその商品の良さを担保しないのだが、僕の観察する範囲では、ある程度レビュー数が多いというのはかなりの確率で商品の良さを担保するのではないかと感じている。
だいたい、サクラが、2万ものポストをするとは考えにくい。サクラチェッカーもサクラ度0%の堂々の合格をたたき出している。
レビューを書くのはめんどくさい作業である。それをわざわざ読者にやらせるくらいの力がある本ということではないか?
ということで、僕はずっと昔から、Amazonの本のレビュー数の多い順でソートできないかなぁと考えていた。
しかし、当時はググってもなかなかそういう情報はヒットしなかった。
なら自分でコードを書くのはどうだろうか?そう思わせてくれるポストをたまたま先日見かけていたので僕もその通りにやってみようと思った。
プログラミングに挫折したならAIお姉ちゃんに任せなさい - 本しゃぶり
そう、ChatGPTである。もっとも、僕が使った課金なしChatGPTは、このブログほど賢くはないと思われるが、やってみたところ、かなりの程度までコードを書くことが出来た。
本当にすごい。特に、ものすごく面倒くさい環境設定を、ほとんどChatGPTに助けてもらった。で、出来たコードが以下だ。
import requests from bs4 import BeautifulSoup def get_books_info(): base_url = 'https://www.amazon.co.jp/gp/bestsellers/books/ref=zg_bs_books_pg_{}?ie=UTF8&pg={}' page_number = 1 book_list = [] while True: url = base_url.format(page_number, page_number) response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') for item in soup.find_all('div', class_='p13n-sc-truncate p13n-sc-line-clamp-1'): title = item.text.strip() author = item.find_next('div', class_='a-row a-size-small').text.strip() review_count = int(item.find_next('a', class_='a-size-small a-link-normal').text.split(' ')[-2]) book_info = {'title': title, 'author': author, 'review_count': review_count} book_list.append(book_info) next_page_element = soup.find('li', class_='zg-selected') if next_page_element: next_page = next_page_element.find_next('li') if next_page: page_number += 1 else: break else: print("現在のページが見つかりませんでした。") break sorted_books = sorted(book_list, key=lambda x: x['review_count'], reverse=True) return sorted_books top_books_info = get_books_info() for index, book in enumerate(top_books_info[:10]): print(f"Rank {index+1}:") print(f"Title: {book['title']}") print(f"Author: {book['author']}") print(f"Review Count: {book['review_count']}") print("="*30)
残念ながらコードにエラーはないが、実行すると「現在のページが見つかりませんでした。」とでるので、どこかがうまくいってないのだろう。読むと大体わかるから、そもそもbaseとなるurlからして多分おかしいことに気づく。
ここで一旦コーディングは諦めてググってみることにした。見つけました。
Amazonレビュー数(評価数)でソートする方法 | ネルログ
結論から言うと、本のページの(例えば本のレビュー100件以上ストア)URLの最後に「&sort=review-count-rank」を付けるだけ。
例えば、
Amazon.co.jp: レビュー100件以上ストア: 本
このURLの最後に「&sort=review-count-rank」を付けます。
https://www.amazon.co.jp/b?ie=UTF8&node=5121704051&sort=review-count-rank
ランキングはというと、
第1位
36381レビューです。
第2位
24762レビューです。
第3位
15930レビューです。
第4位
15359レビューです。
第5位
14893レビューです。
第6位
12730レビューです。
第7位
11636レビューです。
第8位
11381レビューです。
第9位
111444レビューです。
第10位
11024レビュー数です。
以上、レビュー数トップ10でした。
マンガが強いので、マンガを外してもいいのかもしれませんね。
しかし、「嫌われる勇気」は2位ですか。やっぱ半端ないですね。
このエントリー、3000文字超えちゃいました。ここまで付いてきてくれた人いるのかな?(笑)とにかく、ここまで読んでくれてありがとうございました。