Почему database.xlsx не обновляется периодически с помощью Pandas? - PullRequest
0 голосов
/ 06 октября 2019

Я пытаюсь поймать некоторую информацию в Интернете и сохранить ее в файле 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)

Я полагаю, что код будет сохранять новый database.xlsx каждые 900 с, но он создает database.xlsx и необновлять его каждые 15 минут значения, но не показывает ошибки. если print (len (df)), будет показывать более высокое значение, но не создавать другой файл с более высокой информацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...