为什么database.xlsx不使用Pandas定期更新?

2024-05-28 19:33:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在互联网上获取一些信息,并将它们存储到xlsx文件中,但我需要在每15分钟更新database.xlsx时更新这些信息

我尝试过使用xlwt和xlsxwriter,但它们都无法更新database.xlsx。 现在我正在尝试这只熊猫,不知道为什么不更新

import pandas as pd
import xlsxwriter
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os
import datetime
import time

def limpa_texto(texto_lista):
    dados_unicos = []
    linha_certa = 0
    for linha, dados in enumerate(texto_lista):
        if len(dados_unicos) != 0:
            if dados != dados_unicos[linha_certa]:
                dados_unicos.append(texto_lista[linha])
                linha_certa += 1
        else:
            dados_unicos.append(texto_lista[linha])
    return(dados_unicos)

os.chdir('C:/Users/danie/Desktop/Google Drive/GRUVE/AAA PROJETO - DANIEL E RENAN/Python')

loc_webdriver = 'C:/Users/danie/PycharmProjects/chromedriver.exe'
chrome_options = Options()
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(executable_path = loc_webdriver, options = chrome_options)

writer = pd.ExcelWriter('database.xlsx', engine='xlsxwriter')

linha = 0
lista_dados = []

while True:

driver.get('http://dadosabertos.rio.rj.gov.br/apiTransporte/apresentacao/rest/index.cfm/obterTodasPosicoes')

    elementos = driver.find_elements_by_xpath("//pre[contains(@style, 'word-wrap')]")

    for a in elementos:
        texto = a.get_attribute('innerHTML')

    texto = texto[84:]
    texto = texto.replace('[','')
    texto = texto.replace('"','')
    texto = texto.replace(']}','')
    texto = texto.split(']')
    texto = limpa_texto(texto)

    for dados in texto:
        dados = dados.split(',')
        if linha != 0:
            dados = dados[1:]
        lista_dados.append(dados)
        linha += 1

    df = pd.DataFrame(lista_dados)
    df.to_excel(writer, index=False, sheet_name='Banco de dados')
    writer.save()
    print(datetime.datetime.now().strftime('Banco de Dados atualizado - ' + '%d-%m-%Y_%H:%M:%S'))
    time.sleep(900)

我假设代码将每隔900秒保存一个新的database.xlsx,但它会创建一个database.xlsx,并且不会每15分钟更新一次,但不会显示错误。 如果打印(len(df)),将显示更高的值,但不要创建另一个包含更高信息的文件


Tags: import信息datetimechromexlsxdatabaseoptionspd

热门问题