import pickle import backoff import requests from bs4 import BeautifulSoup url = "https://www.kintetsu.jp/unkou/unkou.html" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko" } p = pathlib.Path("kintetsu.pickle") b = "" if p.exists(): with open(p, mode="rb") as fr: b = pickle.load(fr) @backoff.on_exception( backoff.expo, requests.exceptions.RequestException, max_tries=5, giveup=lambda e: 400 <= e.response.status_code < 500, ) def fetch_message(url): r = requests.get(url, headers=headers) r.raise_for_status() soup = BeautifulSoup(r.content, "lxml") message = soup.select_one("body > div > table > tr > td > font").get_text( strip=True ) return message s = fetch_message(url) if b != s: t = s if len(s) < 140 else s[:138] + "…" print(t) with open(p, mode="wb") as fw: pickle.dump(s, fw)