0
respostas

HTTPError: HTTP Error 524

Bom dia, Seguindo a mesma lógica código do treinamento em outro site porem com scroll infinito me aparece o HTTPError: HTTP Error 524. Primeiramente o código rodava sem erro, a partir de um certo momento começou a apresentar o erro, é possível que o scrapping gere algum bloqueio de IP ? Consegui contornar dividindo o scraping em diversos dataframes menores e utilizando o pandas para juntar em posterior. Porem gostaria de saber se existe alguma outra forma de evitar o erro, sem ter que repetir tanto código.

Obrigado pela ajuda

# Declarando variável cards
produtos = []
# Obtendo o HTML
response = urlopen('https://www.auchan.pt/on/demandware.store/Sites-AuchanPT-Site/pt_PT/Search-UpdateGrid?cgid=biologico-e-escolhas-alimentares&prefn1=soldInStores&prefv1=000&start=001&sz=3000&next=true&selectedUrl=https://www.auchan.pt/on/demandware.store/Sites-AuchanPT-Site/pt_PT/Search-UpdateGrid?cgid=biologico-e-escolhas-alimentares&prefn1=soldInStores&prefv1=000&start=001&sz=3000&next=true')
html = response.read().decode('utf-8')
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36'}
soup = BeautifulSoup(html, 'html.parser')



# Obtendo as TAGs de interesse
cards = soup.findAll('div',{'class': "auc-product"})
# Coletando as informações dos cards
for card in cards:
    try:
        produto = {}
        # Adicionando resultado à lista cards
        produto['Data'] = datetime.today().strftime('%Y-%m-%d')
        produto['Empresa'] = 'Auchan'
        produto['Cod_Produto'] =card.find('div',{'class':'product'}).get('data-pid')
        produto['Marca'] = card.find('div',{'class':'product-tile auc-product-tile auc-js-product-tile'}).get('data-gtm').split(',')[3].replace('"brand":','')
        produto['Design'] = card.find('div',{'class':'product-tile auc-product-tile auc-js-product-tile'}).get('data-gtm').split(',')[0].replace('"name":','').replace('{','')
        produto['Tipo_Embalagem'] = ''
        produto['Preco_1'] = card.find('span',{'class':"value"}).getText().replace('\n','').replace('€','')
        produto['Preco_Formato'] = ''
        produto['Preco_lt_kg'] = card.find('span',{'class':"auc-measures--price-per-unit"}).getText().split('/')[0]
        produto['Preco_Formato2'] = card.find('span',{'class':"auc-measures--price-per-unit"}).getText().split('/')[1]
        produto['Link'] = ''
        produto['link_img'] = card.find('img').get('data-src')
        # Adicionando resultado a lista cards
        produtos.append(produto)
    except:
        continue
dataset = pd.DataFrame(produtos)
dataset