開発環境
Python 3.9.7
streamlit 1.10.0
現在Line Notifyを用いたアプリを開発しており、トークンを入力するとLineに天気情報を通知する機能を開発中です。
現在次のようなエラーが出ており、解決策が知りたいです。
AttributeError: 'NoneType' object has no attribute 'text'
Traceback:
File "/Users/username/opt/anaconda3/lib/python3.9/site-packages/streamlit/scriptrunner/script_runner.py", line 554, in _run_script
exec(code, module.dict)
File "Web.py", line 28, in <module>
ws = [i.strip() for i in wc.text.splitlines()]
Python
1import streamlit as st 2import requests 3from bs4 import BeautifulSoup 4import pandas as pd 5 6st.title('LINEに天気を通知するアプリ') 7 8line_notify_token = st.text_input('トークンを入力') 9line_notify_api = 'https://notify-api.line.me/api/notify' 10 11link = '[トークンの取得方法](https://codelabsjp.net/python-line-notify/)' 12st.markdown(link, unsafe_allow_html=True) 13st.write('トークンの取得方法については上のリンクをご参照ください') 14 15 16 17df = pd.read_csv('/Users/username/Desktop/code.csv',encoding = 'utf-8',names=('name', 'code'),index_col='name',parse_dates=True) 18position = df.index 19select_position = st.selectbox('地域を選択してください',position) 20no = df.index.get_loc(select_position) 21 22AreaCode = df['code'][no] 23 24if st.button("実行"): 25 r = requests.get('https://weather.yahoo.co.jp/weather/jp/11/'+ str(AreaCode) + '.html') 26 soup = BeautifulSoup(r.content, "html.parser") 27 wc = soup.find(class_="forecastCity") 28 ws = [i.strip() for i in wc.text.splitlines()] 29 wl = [i for i in ws if i != ""] 30 message = ("\n" + wl[0] + "\n" + wl[1] + "\n" + "最高気温:" + wl[2] + "\n"+ "最低気温:" + wl[3] + "\n" + "\n" + wl[18] + "\n" + wl[19] + "\n" + "最高気温:" + wl[20] + "\n" + "最低気温:" + wl[21] ) 31 payload = {'message': message} 32 headers = {'Authorization': 'Bearer ' + line_notify_token} 33 line_notify = requests.post(line_notify_api, data=payload, headers=headers)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。