2017-11-20 10 views
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回は何度か印刷されます)。しかし、関数で実装するとうまくいきません。

私の目標をどのように達成できるか、機能に関する提案は本当にありがとうと思います!

敬具、 ムラデン

+0

あなたはcronのを使用してみました:それは構文のようにcronを使用していないが

スケジュールが良さそうに見えますか? –

+0

関数を定期的に呼び出すには、['threading.Timer'](https://docs.python.org/3/library/threading.html#timer-objects)オブジェクトを使用できます。 –

答えて

関連する問題