どうやら口コミが消されている事件があるようなので
見てみることにしました。



解説動画はこちら






ジャングリア沖縄

2025年7月25日に開業したテーマパーク
「大自然没入型」を掲げ、恐竜や絶景などを
テーマにしたアトラクションや温泉施設を備える

口コミが香ばしいので、全部見てみました。



口コミデータを取得する方法

(Google Chromeの場合)
Google口コミから、ジャングリアの口コミを開く
最下段までスクロールする

その状態で「右クリックから検証」で検証ツールを開く
HTMLのソースをクリックして
「Copy outerHTML」を実行

テキストエディターに貼り付けて
htmlファイルとして保存する



HTMLをBeautiful Soup で解析する


クラス名の部分は変更される可能性があるので
データが取れない場合は、変更してみてください。
(HTMLファイル内のclassの部分の文字列に変更する)
from bs4 import BeautifulSoup

# ファイル名は適宜変更する
with open("google.html") as _f:
    html_data = _f.read()

soup = BeautifulSoup(html_data, "html.parser")
all_div = soup.find("div",class_="aSzfg")
divs = all_div.find_all("div",class_="bwb7ce")

data = []
for div in divs:
    date_tag = div.find("span",class_="y3Ibjb")
    date = date_tag.text.replace("最終編集: ","")
    
    name_tag = div.find("div",class_="Vpc5Fe")
    name = name_tag.text

    role_tag = div.find("div",class_="GSM50")
    roles = role_tag.text.split("·")
    role = roles[0] if len(roles)==3 else ""
    num = roles[1].replace(" 件のクチコミ","") if len(roles)==3 else roles[0].replace(" 件のクチコミ","")
    photo = roles[2].replace(" 枚の写真","") if len(roles)>2 else ("" if len(roles)==1 else roles[1].replace(" 枚の写真",""))
    
    rating_tag = div.find("div",class_="dHX2k")
    rating = rating_tag.get("aria-label").replace("5 点中 ","").replace(" 点の評価","")

    comment_tag = div.find("div",class_="OA1nbd")
    comment = comment_tag.text.replace(" …もっと見る","") if comment_tag is not None else ""
    tmp = [date,name,role,num,photo,rating,comment]
    data.append(tmp)

データフレームに変換する
import pandas as pd
import re

# 日付変換用関数
def convert_to_days(value):
    if "週間前" in value:
        weeks = int(re.search(r"(\d+)", value).group(1))
        return -weeks * 7
    elif "日前" in value:
        days = int(re.search(r"(\d+)", value).group(1))
        return -days
    elif "時間前" in value:
        return -1
    else:
        return 0

columns = ["日付", "名前", "職業", "口コミ数", "写真の数", "星の数", "コメント"]
df = pd.DataFrame(data,columns = columns)

df["口コミ数"] = df["口コミ数"].replace("", 0).astype(int)
df["写真の数"] = df["写真の数"].replace("", 0).astype(int)
df["星の数"] = df["星の数"].replace("", 0).astype(float)
df["日前"] = df["日付"].apply(convert_to_days)


星の数などを可視化する

データができたら可視化していきましょう

要ライブラリ
pip install japanize_matplotlib
pip install janome
pip install wordcloud


星の数ごとのカウント
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import japanize_matplotlib

# ================
# 1. 星の数のヒストグラム
# ================
plt.figure(figsize=(6, 4))
sns.histplot(df["星の数"], bins=10, kde=True, color="purple")
plt.title("星の数のヒストグラム")
plt.xlabel("星の数")
plt.ylabel("件数")
plt.show()
download



散布図
# ================
# 2. 散布図 (2種類)
# ================
plt.figure(figsize=(12, 5))

# (1) 口コミ数 vs 星の数
plt.subplot(1, 3, 1)
sns.scatterplot(x="口コミ数", y="星の数", data=df, color="blue")
plt.title("口コミ数 vs 星の数")

# (2) 写真の数 vs 星の数
plt.subplot(1, 3, 2)
sns.scatterplot(x="写真の数", y="星の数", data=df, color="green")
plt.title("写真の数 vs 星の数")

# (3) X日前 vs 星の数
plt.subplot(1, 3, 3)
sns.scatterplot(x="日前", y="星の数", data=df, color="red")
plt.title("日前 vs 星の数")

plt.tight_layout()
plt.show()
download-2


日毎の星の数
# ▼ 棒グラフ作成
plt.figure(figsize=(12, 6))
sns.countplot(data=df, x="日前", hue="星の数", palette="viridis")

# ▼ 軸・タイトルの設定
plt.title("日前ごとの星の数カウント", fontsize=16)
plt.xlabel("日前", fontsize=14)
plt.ylabel("カウント数", fontsize=14)
plt.xticks(rotation=45)

plt.legend(title="星の数")
plt.tight_layout()
plt.show()
download-1



ワードクラウドでコメントを可視化する

フォントパスについては環境ごとに変更が必要です
下記はmacの例
import pandas as pd
from janome.tokenizer import Tokenizer
from wordcloud import WordCloud
import matplotlib.pyplot as plt

# Janome で形態素解析
tokenizer = Tokenizer()

def extract_nouns(text):
    """文章から名詞を抽出してリストで返す"""
    words = []
    for token in tokenizer.tokenize(text):
        part = token.part_of_speech.split(',')[0]
        if part == "名詞":
            words.append(token.surface)
    return words

# 全コメントから名詞を抽出
all_words = []
for comment in df["コメント"]:
    all_words.extend(extract_nouns(comment))
text_for_wc = " ".join(all_words)

# WordCloud 作成
wc = WordCloud(
    font_path="/System/Library/Fonts/ヒラギノ角ゴシック W6.ttc",
    width=800, height=600,
    background_color="white",
    colormap="viridis"
).generate(text_for_wc)

# 画像表示
plt.figure(figsize=(10, 8))
plt.imshow(wc, interpolation="bilinear")
plt.axis("off")
plt.tight_layout()
plt.show()
download-3



終わりに

はじめにデータを取得した際は
63件ありました。

でも動画を撮る際には
58件に減っていました。

ここから言えることとしては

Google口コミが消されています!!!


Googleさん
口コミは重要なので消さないでください!!!

消した口コミ
元に戻してください

消費者が正しい判断ができるように
口コミは正しくあるべきです

良いものは良い
悪いものは悪い

悪いものが良いように操作されたり
その逆も絶対にあってはならんことです。

また、口コミを鵜呑みにせず
実際に見てみることも重要だったりします。

まあ、今回の件は
確実に消されているので
正しい口コミとして
判断できない状態になっています。

今後の展開が楽しみですね!!!
それでは。