pd.read_html błąd klienta zdalnego klienta odłączony

Oct 21 2020

Wczoraj poniższy kod bez problemu dał mi ramkę danych. Ale dzisiaj zaczęło mi się pojawiać następujący błąd:

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

Jakieś rozwiązanie? Wiem, że problem pochodzi ze strony internetowej, ale potrzebuję rozwiązania, które pomoże mi nadal używać tego samego kodu

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
             )

Odpowiedzi

AndrejKesely Oct 21 2020 at 09:48

Błąd występuje po stronie serwera - czasami serwer zwraca błąd. Jednym obejściem jest powtarzanie żądań aż do sukcesu, na przykład:

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)

Wydruki:

                                  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]