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