pd.read_html Fehler Client Remote getrennt

Oct 21 2020

Gestern gab mir der folgende Code den Datenrahmen ohne Probleme. Aber heute gab es folgenden Fehler:

  http.client.RemoteDisconnected: Remote end closed connection without response

Irgendeine Lösung? Ich weiß, dass das Problem von der Website stammt, aber ich benötige eine Lösung, die mir helfen kann, weiterhin denselben Code zu verwenden

import datetime
import pandas as pd
import sqlalchemy


from datetime import datetime
from datetime import date, timedelta

#d = datetime.today().strftime('%d-%m-%Y')
data_atual=datetime.now()
mes_atual = data_atual.month
ano_atual= data_atual.year

df = []


for j in range (2020, ano_atual+1):

    for i in range (9,13):

           frame = []


           df1 = pd.read_html('https://www.centrodeinformacao.ren.pt/userControls/GetExcel.aspx?T=REN_MENSAL&P='+str(j)+'&PP='+str(i)+'&PPP=26&PPPP=36&PPPPP=0&variation=PT', decimal=',', thousands=',')[0]
           df2 = pd.read_html('https://www.centrodeinformacao.ren.pt/userControls/GetExcel.aspx?T=REN_MENSAL&P='+str(j)+'&PP='+str(i)+'&PPP=26&PPPP=36&PPPPP=0&variation=PT', decimal=',', thousands=',')[2]


           frame.append(df1)
           frame.append(df2)
           print(frame)
           result = pd.concat(frame)
           print(result)
           engine = sqlalchemy.create_engine('mysql+pymysql://root:1234@localhost:3306/projeto')


           result.to_sql(
              name='renmensal'+str(i)+str(j),  # database table name
              con=engine,
              if_exists='replace',
              index=False
             )

Antworten

AndrejKesely Oct 21 2020 at 09:48

Der Fehler liegt auf der Serverseite - manchmal gibt der Server einen Fehler zurück. Eine Problemumgehung besteht darin, die Anforderungen bis zum Erfolg zu wiederholen, zum Beispiel:

import http
import pandas as pd

j = 2020
i = 9

url = 'https://www.centrodeinformacao.ren.pt/userControls/GetExcel.aspx?T=REN_MENSAL&P='+str(j)+'&PP='+str(i)+'&PPP=26&PPPP=36&PPPPP=0&variation=PT'

while True:
    try:
        df1 = pd.read_html(url, decimal=',', thousands=',')[0]
        break
    except http.client.RemoteDisconnected as e:
        continue

print(df1)

Drucke:

                                  0  ...                    6
0                     CONSUMO [GWh]  ...  Variação Acumulada:
1                            Quebra  ...                  NaN
2                      Fios de Água  ...                 78.2
3                        Albufeiras  ...                 58.0
4    Total Hídrica Regime Ordinário  ...                 67.8
5                             Sines  ...                -77.7
6                          Ribatejo  ...                 -3.2
7                             Lares  ...                  3.0
8                         Pego C.C.  ...                 35.0
9                              Pego  ...                -64.6
10                   T.Outeiro C.C.  ...                  3.6
11   Total Térmica Regime Ordinário  ...                -20.7
12           TOTAL PRODUÇÃO LÍQUIDA  ...                  5.3
13           Importação (Comercial)  ...                -10.1
14           Exportação (Comercial)  ...                 66.0
15                 SALDO IMPORTADOR  ...                -43.9
16                       Hidráulica  ...                 37.9
17                          Térmica  ...                  3.9
18                           Eólica  ...                 -9.1
19                     Fotovoltaica  ...                 16.7
20                            Ondas  ...                  NaN
21   TOTAL PRODUÇÃO REGIME ESPECIAL  ...                 -1.3
22                    PRE Renovável  ...                 -0.6
23          BOMBAGEM HIDROELÉCTRICA  ...                 24.2
24                          CONSUMO  ...                 -3.5
25  Evolução corr.temp e dias úteis  ...                 -4.2
26     Consumo Mercado Liberalizado  ...                  ---
27         Consumo Mercado Regulado  ...                  ---

[28 rows x 7 columns]