2017-11-20 1 views
1

웹 페이지에서 일부 데이터를 가져 와서 사전에 저장하는 다음 함수가 있습니다. 시간 소인을 키로, 데이터 (목록)를 값으로 사용합니다.주기적으로 파이썬에서 함수를 실행하십시오.

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

당신이 크론를 사용하여 시도 해 봤나 :이 구문처럼 크론를 사용하지 않지만

일정 착해 보이는? –

+0

주기적으로 함수를 호출하는 데 [threading.Timer'] (https://docs.python.org/3/library/threading.html#timer-objects) 객체를 사용할 수 있습니다. –

답변

관련 문제