Web 上に表示される HTML の内容には次の2種類があります。
→ Chrome で「Ctrl + U」で閲覧できるソース
→ requests.get() で取得したソースはこれ
→ Chrome で 「Ctrl + Shift + I」の開発者ツールで閲覧できるソース
→ ブラウザで実際にレンダリングする必要があるため、requests.get() で取得したソースには含まれていない
→ Javascript のレンダリングが必要なので、Selenium を使う必要があり
今回の場合、「Ctrl + U」で確認したソースに <span class="c-content__count">99770</span>
は存在しないので、あとから Javascript で挿入していると推測されます。
なので、質問のやり方ではその span タグの値の取得は無理です。
ソースを眺めてみると、meta タグに以下があるので、こっちであれば、requests.get() で取得したソースに含まれるので、取得可能です。
html
1<meta content="レビュー数:99806件 / 平均スコア:★★★★4.0点" property="og:description" />
python
1import re
2
3import requests
4from bs4 import BeautifulSoup
5
6url = "https://filmarks.com//movies/56770"
7res = requests.get(url)
8
9soup = BeautifulSoup(res.content)
10
11# 次のタグを探す <meta content="レビュー数:99806件 / 平均スコア:★★★★4.0点" property="og:description" />
12# `レビュー数` が content 属性に含まれる meta タグを探す
13meta_tag = soup.find("meta", content=lambda x: x and "レビュー数" in x)
14
15# レビュー数:99806件 / 平均スコア:★★★★4.0点 から正規表現で件数だけ取り出す。
16n_review = re.search(r"(\d)件", meta_tag["content"]).group(1)
17print(n_review)
タグがとれないと思ったら、「Ctrl + U」で閲覧できるソースに含まれているかどうかを確認してください。
そこになければ、requests では無理です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/20 17:46