1
Webページからデータを取得して辞書に格納する次の関数があります。キーとしてのタイムスタンプ、および値としてのデータ(リスト)。Pythonで関数を定期的に実行しています
def getData(d):
page = requests.get('http://www.transportburgas.bg/bg/%D0%B5%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D0%BE-%D1%82%D0%B0%D0%B1%D0%BB%D0%BE')
soup = BeautifulSoup(page.content, 'html.parser')
table = soup.find_all("table", class_="table table-striped table-hover")
rows = table[0].find_all('tr')
table_head = table[0].find_all('th')
header = []
tr_l = []
rows = []
for tr in table[0].find_all('tr'):
value = tr.get_text()
rows.append(value)
time_stamp = rows[1].split("\n")[1]
data = []
for i in rows[1:]:
a = i.split("\n")
if time.strptime(a[1], '%d/%m/%Y %H:%M:%S')[:4] == time.localtime()[:4]:
data.append(int(a[3]))
else:
data.append(np.nan)
d[time_stamp] = data
5分ごとにデータが更新されます。私はこの機能を5分ごとに自動的に実行させたいと思っています。
def period_fun(it):
iterations = it
while iterations != 0:
getData(dic)
time.sleep(300)
iterations = iterations -1
ただし、この機能は一度だけ実行され、私は辞書に一つだけのアイテムで終わる:私はtime.sleepと、この機能でそれをやろうとしています。私は関数の代わりに単純なprint(1)を試してみましたが、それは動作します(1回は何度か印刷されます)。しかし、関数で実装するとうまくいきません。
私の目標をどのように達成できるか、機能に関する提案は本当にありがとうと思います!
敬具、 ムラデン
あなたはcronのを使用してみました:それは構文のようにcronを使用していないが
スケジュールが良さそうに見えますか? –
関数を定期的に呼び出すには、['threading.Timer'](https://docs.python.org/3/library/threading.html#timer-objects)オブジェクトを使用できます。 –