まあただの実験だったので放置でもいいんですが、さすがに毎日同じ料理の情報が書き込まれ続けるのは恥ずかしいので、簡単な逃げを。。
一番先頭の料理情報だけをとってたんですが、とりあえず find_allにして、全リストをとってきたうえで、乱数でどれか一つを表示する形に変更しました。まあたまには同じ料理が続く場合があるかもしれませんが、まあそれは放置(w
まあ超適当に記事をとってくる部分を簡単に修正。。。
def get_todays_food(): # ヘッドラインニュースのタイトル格納用リスト news_data = [] # urlの指定 url="https://www.kyounoryouri.jp" search_url = "https://www.kyounoryouri.jp/recipe/ranking" # ユーザーエージェントを指定 ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) '\ 'AppleWebKit/537.36 (KHTML, like Gecko) '\ 'Gecko/20100101 Firefox/60.0 ' req = urllib.request.Request(search_url, headers={'User-Agent': ua}) #htmlの取得 html = urllib.request.urlopen(req) # htmlパース soup = BeautifulSoup(html, "html.parser") topicsindex = soup.find('div', attrs={'class': 'recipe--ranking-list'}) # class「topicsindex」内から記事タイトルを抽出 list1=topicsindex.find_all('img') list2=topicsindex.find_all('div',class_='col') num=random.randint(0,len(list1)-1) # 記事タイトルとURLを保存 link=url+list1[num].get('src') #print(link) body=url+list2[num].get('data-url') #print(body) title=list1[num].get('alt') #print(title) news_data.append([title,body,link]) return news_data
ついでに、今まで夜 8:00に動かしてたんですが朝の方がなにかとバグとかに気づくし、その気になれば自分で手修正したりとかもできるので、朝8:00 に1回だけ動くように変更しました。
from apscheduler.schedulers.blocking import BlockingScheduler import os sched = BlockingScheduler() #@sched.scheduled_job('interval', minutes=720) #def timed_job(): # os.system("python hatenapost2.py") # os.system("python hatenapost.py") @sched.scheduled_job('cron', hour=8) def scheduled_job(): os.system("python hatenapost1.py") os.system("python hatenapost2.py") os.system("python hatenapost3.py") os.system("python hatenapost4.py") sched.start()
数回テストしただけで同じ記事が2回出てきたのでダメかもしれないけど、まあいいや。。大したことない処理を簡単に直そうとおもっただけなのに案外時間がかかった。 自動投稿はバグ対応以外は一旦やめて他のことをやろう。。。