前提・実現したいこと
pythonで「じゃらん」の口コミをスクレイピングしようとしているのですが、データフレームが空になってしまいます。データが表示されるようにするにはどうしたらよいでしょうか。
sns.countplot('sex', data = data)を実行すると、以下のようなメッセージが表示されます。
ValueError: min() arg is an empty sequence
また、print(data)で内容を確認したところ、
Empty DataFrame
Columns: [sex, age, value, date, trip, price]
Index: []
と表示され、データが入っていないようです。
初学者ですが、ご教授願います。
コードはhttps://www.acceluniverse.com/blog/developers/2020/01/post-36.htmlから拝借しました。
発生している問題・エラーメッセージ
ValueError: min() arg is an empty sequence
該当のソースコード
python
from bs4 import BeautifulSoup import urllib import pandas as pd import requests import seaborn as sns html = requests.get('取得したい観光地の口コミURL') soup = BeautifulSoup(html.content,'html.parser') url_list = ['口コミページのURL', '***'] valuer = [] for row in url_list: row = str(row) html = urllib.request.urlopen(row) soup = BeautifulSoup(html) valuer.append(soup.find_all("span", class_='jlnpc-kuchikomi__cassette__user__name')) continue valuer_list = valuer[0]+valuer[1]+valuer[2] new_valuer_list = [] for row in valuer_list: row = str(row) new_valuer_list.append(row.split('(',1).split(')',0)) data = pd.DataFrame() sex = [] age = [] for row in new_valuer_list: row = str(row) sex.append(row.split(' / ')[0]) age.append(row.split(' / ')[1]) new_age = [] for row in age: row = str(row) new_age.append(row.replace("代","'s")) data['sex'] = sex data['age'] = new_age value = [] for row in url_list: row = str(row) html = urllib.request.urlopen(row) soup = BeautifulSoup(html) value.append(soup.find_all("span", class_='jlnpc-kuchikomi__cassette__rating__em')) continue value = value[0]+value[1]+value[2] new_value = [] for row in value: row = str(row) new_value.append(row.split('')[1].split('')[0]) data['value'] = new_value data['sex'].value_counts() sns.countplot('sex', data = data)
試したこと
URLに問題があることを疑いましたが、別のURLで試しても同じエラーが出ました。
補足情報(FW/ツールのバージョンなど)
まだ回答がついていません
会員登録して回答してみよう