本読みライフ

読書ブログをやろうと思って気づいたら迷走している。

Amazonで本のレビュー数のランキングがわからないか?

僕は、定期的にAmazonの本の和書総合ランキングを見て、気になった本があったらチェックするようにしている。

 

今日も久々にチェックしてみたら、なんと、81位ではあるが、あの、「嫌われる勇気」がランクインしていた。

 

発売からもうすぐ10年になろうというのにびっくりである

しかもそのレビュー数が異常で、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レビューです。

運転者 未来を変える過去からの使者

運転者 未来を変える過去からの使者

  • 作者:喜多川泰
  • ディスカヴァー・トゥエンティワン
Amazon

第7位

11636レビューです。

第8位

11381レビューです。

第9位

111444レビューです。

第10位

11024レビュー数です。

以上、レビュー数トップ10でした。

 

マンガが強いので、マンガを外してもいいのかもしれませんね。

 

しかし、「嫌われる勇気」は2位ですか。やっぱ半端ないですね。

 

このエントリー、3000文字超えちゃいました。ここまで付いてきてくれた人いるのかな?(笑)とにかく、ここまで読んでくれてありがとうございました。