在python

时间:2017-11-20 14:13:22

标签: python-3.x function web-scraping

我有以下功能从网页获取一些数据并存储在字典中。时间戳作为键,数据(列表)作为值。

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分钟自动运行一次。我正在尝试使用time.sleep和此函数:

def period_fun(it):
    iterations = it 
    while iterations != 0:
        getData(dic)
        time.sleep(300)
        iterations = iterations -1

然而,这个函数只运行一次,我最终只有字典中的一个项目。我用一个简单的打印(1)而不是函数尝试了它并且它可以工作(1次被打印几次),但是当我使用它实现它时它不起作用。

非常感谢有关功能的任何建议或我如何实现目标!

祝你好运, Mladen

1 个答案:

答案 0 :(得分:0)

使用某些使用cron作业的库怎么样?

虽然没有使用类似cron的语法,但计划看起来很不错:https://github.com/dbader/schedule