前提・実現したいこと
pythonで某坂道アイドルのブログサイトをスクレイピングして名前とURLを取得し、LINE Notifyで通知させるシステムを作っています.
取得した名前が用意した名前のリストに含まれているときLINE送信・通知を行い,含まれていないとき15分後に再度スクレイピングを行います.
15分後に行われるのですが,名前が含まれていてlineが送信されるのはいつもブログ更新の15分後なのです.
含まれているときも15分後にline送信が実行されるのをすぐに送信するようにしたいです.
私自身どこか勘違いしていると自覚しています.ご教授お願い致します。
発生している問題・エラーメッセージ
対象のブログです.23:14に更新されました.
送信されたlineの様子です.23:29に送信されました.
該当のソースコード
python
1import requests 2from bs4 import BeautifulSoup 3import time 4 5member = ["河田陽菜"] 6load_url = "https://www.hinatazaka46.com/s/official/diary/member" 7 8def line(): 9 #必要な変数を設定 10 #取得したトークン 11 TOKEN = ''#省略させていただきます。 12 #APIのURL 13 api_url = 'https://notify-api.line.me/api/notify' 14 #送りたい内容 15 send_contents = member_name+"\n"+url_name 16 #情報を辞書型にする 17 TOKEN_dic = {'Authorization': 'Bearer' + ' ' + TOKEN} 18 send_dic = {'message': send_contents} 19 print(TOKEN_dic) 20 print(send_dic) 21 #LINE通知を送る(200: 成功時、400: リクエストが不正、401: アクセストークンが無効:公式より) 22 requests.post(api_url, headers=TOKEN_dic, data=send_dic) 23 24 25while True: 26 html = requests.get(load_url) 27 soup = BeautifulSoup(html.content,"html.parser") 28 29 member_name = soup.find(class_="c-blog-top__name").text 30 member_name = member_name.replace(' ', '').replace('\n', '') 31 url_place = soup.find(class_="p-blog-main__head") 32 url = url_place.get("href", "default value") 33 url_name = "hinatazaka46.com" + url 34 35 if member_name in member: 36 line() 37 break 38 else: 39 print("none") 40 time.sleep(900)
試したこと
time.sleepの場所をwhile Trueのすぐ下にしました.
補足情報(FW/ツールのバージョンなど)
win11,python3.9.7,requests 2.23.0,beautifulsoup4 4.10.0
あなたの回答
tips
プレビュー