アサトの実験blog

Pythonでの自動化とか、IT関連で興味のあるテーマについて色々実験する場所です

バグ対応(https://kyouno-ryouri.hatenadiary.jp/)

まあただの実験だったので放置でもいいんですが、さすがに毎日同じ料理の情報が書き込まれ続けるのは恥ずかしいので、簡単な逃げを。。

一番先頭の料理情報だけをとってたんですが、とりあえず 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回出てきたのでダメかもしれないけど、まあいいや。。大したことない処理を簡単に直そうとおもっただけなのに案外時間がかかった。 自動投稿はバグ対応以外は一旦やめて他のことをやろう。。。