Oii João Pedro, tudo certo por aí?
Antes de falarmos sobre esse erro, vamos entender um pouquinho melhor sobre o funcionamento do certificado SSL.
O que é um certificado SSL?
De forma resumida, é um certificado digital que autentica a identidade de um site e possibilita uma conexão criptografada. O SSL mantém a segurança das conexões de internet e impede que criminosos leiam ou modifiquem as informações transferidas entre dois sistemas. Esses certificados são gerados por uma autoridade de certificação (CA, Certificate Authority).
Quando estamos realizando o scraping de uma página, as bibliotecas Python também fazem essa verificação da validade e autenticidade do certificado SSL do site que estamos tentando acessar, por meio de uma assinatura. O que acontece é que existem diferentes tipos de certificados SSL, e alguns deles não possuem uma assinatura digital diretamente da autoridade certificadora.
Sendo assim, geralmente, essa mensagem de erro "certificate verify failed: self signed certificate in certificate chain" é gerada quando estamos tentando acessar um site que não possui um certificado SSL assinado pela CA. Ele pode estar sendo auto-assinado ou assinado pelo próprio provedor daquele site, isso varia de acordo com o certificado SSL adquirido pelo servidor web. Também é necessário que você atualize sua base de certificados do computador, para que quando efetuar uma solicitação haja o reconhecimento dos certificados e isso pode ser feito através do comando:
pip install certifi
Tente executar novamente o código com o HTTPS. Caso o erro continue a ocorrer, você pode desabilitar a verificação de contexto para esse site, digitando no cabeçalho do arquivo o seguinte código:
import os, ssl
if (not os.environ.get('PYTHONHTTPSVERIFY', '') and getattr(ssl, '_create_unverified_context', None)):
ssl._create_default_https_context = ssl._create_unverified_context
Espero que isso te ajude. Qualquer dúvida estou por aqui :)
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!