用Python。。。转到该站点,检查新的zip文件并

2024-06-25 05:29:29 发布

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

我需要去该网站,检查一个新的zip文件,并下载这个新的zip文件。然后解压缩文件。 我做得不好,尽管离得很近

我试图在网站上找到该文件,但最接近的是下面的代码

session = HTMLSession()

r = session.get('http://www.caixa.gov.br/site/paginas/downloads.aspx')

about = r.html.find('#ctl00_ctl59_g_25db0873_16a3_46ff_b78a_a48f0566ce2f_rptCategoriasDownloads_ctl437_lkbCategoria', first=True)

sel = 'div > ul > li> a'

print(r.html.find(sel, first=True).text)

print (about.html)

我希望脚本将下载最新的文件: http://www.caixa.gov.br/site/paginas/downloads.aspx

Orçamento Geral da União – Base de Dados DB_GESTORES_12_09_2019 (So far this is the newest file.)


Tags: 文件brhttp网站sessiondownloadshtmlwww
1条回答
网友
1楼 · 发布于 2024-06-25 05:29:29
# Importando bibliotecas usadas 
import schedule 
import time 
import os
import requests, re
from datetime import datetime
from zipfile import ZipFile

# Capturar data do dia e formatar
# dia de hoje
dateTimeObj = datetime.now()
timestampStr = dateTimeObj.strftime("%d_%m_%Y")
# dia de ontem
last_day = int(dateTimeObj.strftime("%d")) - 1
last_day = (str(last_day) +  dateTimeObj.strftime("_%m_%Y"))

# Variáveis de configurações 
dir_local = 'C:/Users/login/Documents/Projetos/Modelagem - Dados - Caixa/banco_bi_caixa_ogu/'
db_gest = 'DB_GESTORES_'

last_day = db_gest + last_day + '.zip'
filename = db_gest + timestampStr + '.zip'
#filename = 'DB_GESTORES_19_09_2019.zip' # descomentar para teste

url_ontem = 'http://www.caixa.gov.br/Downloads/Orcamento-Geral-da-Uniao-Base-de-Dados/' + last_day
url = 'http://www.caixa.gov.br/Downloads/Orcamento-Geral-da-Uniao-Base-de-Dados/' + filename

# Função baixar (arquivo de ontem)
def baixar_ontem():

    # Usando requests, site com redirecionamento e cookies  
    myfile_ontem = requests.get(url_ontem, allow_redirects=True, cookies={'fhauth':'cacb87b4f894bc0525ccd3004d3a6dab580acd07'}).content

    # Verificar existência do arquivo filename pelo conteúdo dentro do myfile 

    if re.search("File Not Found", str(myfile_ontem)):
        print("Não foi possível efetuar o download ou arquivo não existe! Arquivo: " + last_day)
    else:
        with open(dir_local + last_day, 'wb') as f:
            f.write(myfile_ontem)

# Função baixar
def baixar():

    # Usando requests, site com redirecionamento e cookies  
    myfile = requests.get(url, allow_redirects=True, cookies={'fhauth':'cacb87b4f894bc0525ccd3004d3a6dab580acd07'}).content

    # Verificar existência do arquivo filename pelo conteúdo dentro do myfile 

    if re.search("File Not Found", str(myfile)):
        print("Não foi possível efetuar o download ou arquivo não existe! Arquivo: " + filename)
    else:
        with open(dir_local + filename, 'wb') as f:
            f.write(myfile)

# Função extrair
def extrair():
    if os.path.exists(dir_local + filename):
        unzip = ZipFile(dir_local + filename)
        unzip.extractall(dir_local)
        unzip.close()
    elif os.path.exists(dir_local + last_day):
        unzip = ZipFile(dir_local + last_day)
        unzip.extractall(dir_local)
        unzip.close()
    else:
        print('Função Extrair: Arquivo não existe')

# Remover o arquivo "filename" ZIP
def remover():
    if os.path.exists(dir_local + filename):
        os.remove(dir_local + filename)
    elif os.path.exists(dir_local + last_day):
        os.remove(dir_local + last_day)
    else:
        print('Função Remover: Arquivo não existe')

''' # Usar posteriormente 
## - Verificar existência do arquivo - ##
import urllib2

def se_existe(url):
    request = urllib2.Request(url)
    request.get_method = lambda : 'HEAD'
    try:
        response = urllib2.urlopen(request)
        return True
    except:
        return False
######### - fim da verificação - #########
'''


baixar_ontem()
baixar()
extrair()
remover()

相关问题 更多 >