前提・実現したいこと
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
1from bs4 import BeautifulSoup 2import urllib 3import pandas as pd 4import requests 5import seaborn as sns 6 7html = requests.get('取得したい観光地の口コミURL') 8soup = BeautifulSoup(html.content,'html.parser') 9 10url_list = ['口コミページのURL', 11 '***'] 12 13valuer = [] 14for row in url_list: 15 row = str(row) 16 html = urllib.request.urlopen(row) 17 soup = BeautifulSoup(html) 18 valuer.append(soup.find_all("span", class_='jlnpc-kuchikomi__cassette__user__name')) 19 continue 20valuer_list = valuer[0]+valuer[1]+valuer[2] 21new_valuer_list = [] 22for row in valuer_list: 23 row = str(row) 24 new_valuer_list.append(row.split('(',1).split(')',0)) 25 26data = pd.DataFrame() 27sex = [] 28age = [] 29for row in new_valuer_list: 30 row = str(row) 31 sex.append(row.split(' / ')[0]) 32 age.append(row.split(' / ')[1]) 33new_age = [] 34for row in age: 35 row = str(row) 36 new_age.append(row.replace("代","'s")) 37data['sex'] = sex 38data['age'] = new_age 39 40value = [] 41for row in url_list: 42 row = str(row) 43 html = urllib.request.urlopen(row) 44 soup = BeautifulSoup(html) 45 value.append(soup.find_all("span", class_='jlnpc-kuchikomi__cassette__rating__em')) 46 continue 47value = value[0]+value[1]+value[2] 48new_value = [] 49for row in value: 50 row = str(row) 51 new_value.append(row.split('')[1].split('')[0]) 52data['value'] = new_value 53 54data['sex'].value_counts() 55 56sns.countplot('sex', data = data)
試したこと
URLに問題があることを疑いましたが、別のURLで試しても同じエラーが出ました。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー