if関数がうまく機能していない?
解決したいこと
pythonにてwebページの在庫復活を監視するプログラム作成に挑戦しています。
販売ページのカートボタンのidを取得して文字列を解析、それが特定の文字とイコールになった場合にLINEに通知するという形式を目指しています。
idを取得して、文字列を解析→OK
特定の文字列とイコールになったか判定→?
LINEに通知→×
該当するソースコード
url = 'https://store.shopping~'
STOCK_WORD = '商品をカートに入れる'
# LINE通知設定
TOKEN = 'QBMbucXXXXXXXXXXXXX'
# APIのURL
api_url = ' https://notify-api.line.me/api/notify'
send_contents = {'在庫復活' + url }
# LINE NOTIFY 辞書型の設定
TOKEN_dic = {'Authorization': 'Bearer' + ' ' + TOKEN}send_dic = {'Message': send_contents}
def find_detail():
res = requests.get(url)
soup = BeautifulSoup(res.text,'html.parser')
#idの文字列を取得 add_cartは「商品をカートに入れる」ボタンのid
try:
active = soup.find(id='add_cart').get_text()
except:
active = ''
return(active)
def new_stock ():
active = find_detail()
if active==STOCK_WORD:
print('入荷')
requests.post(api_url, headers = TOKEN_dic, data = send_dic)
else:
print('在庫なし')
if __name__ == "__main__":
while True:
new_stock ()
time.sleep(60)
自分で試したこと
コードの順番を入れ替えたりしたのですが、ダメでした。
def find_detailの部分のtry・exeptのあとにprint(active)をすると【商品をカートに入れる】という結果が返ってくるので
そこまでは間違っていないのかなとは思うのですが…
0