Oii Alexandre, como você está?
Peço desculpas pela demora em obter um retorno.
Como testar o Scraping para outros sites? Quais permissões serão necessárias? tenho que estar cadastrado como usuário do site para aplicar scrapping em sua página?
Tudo depende de qual site você almeja fazer o scraping. Supondo que seja um site aberto que não exija login, o que é indispensável é definir o user-agent, para que o código seja capaz de simular o navegador, então para a maioria desses casos, o procedimento é como mostrado no curso.
Já em casos que o site tenha login, temos algumas possibilidades:
Primeira: parametrizar a requisição com os cookies da página
Segunda: efetuar uma requisição POST com os parâmetros da requisição
Terceira: automatizar o procedimento, fazendo com que o código seja capaz de digitar informações, clicar em botões, etc.
- Primeira: parametrizar a requisição com os cookies da página
Para fazermos isso, o primeiro passo é identificar no site qual cookie iremos utilizar. Normalmente, os sites possuem vários cookies, então devemos analisar e pegar apenas aquele que contém informações sobre a autenticação no site. Esse tipo de cookie geralmente contém em seu nome palavras como login ou session.
Para acessar esse cookie, é importante que você esteja logado nesse site e clique no ícone de cadeado no canto superior esquerdo da página. E identifique o cookie desejado, como mostro na imagem abaixo:
Ao clicar nesse cadeado, será aberta uma janela onde será possível localizar uma pasta com os cookies da página e após identificar o desejado, basta copiar o seu conteúdo:
Nisso, dentro da biblioteca de requisições, a request, há um parâmetro para passarmos o cookie, ficará da seguinte forma:
from bs4 import BeautifulSoup
from urllib.request import urlopen
import requests
cookies = {'nome_do_cookie' : 'conteudo_do_cookie''}
response = requests.get(url, cookies = cookies)
html = response.text
soup = BeautifulSoup(html, 'html.parser')
- Segunda: efetuar uma requisição POST com os parâmetros da requisição
Por padrão, o campo de login e senha é um formulário. E quando trabalhamos com programação web, um formulário é enviado via requisição POST, então, podemos também simular essa requisição. Para isso, é necessário abrir a ferramenta de desenvolvedor e na guia Network, observar qual requisição POST é feita quando clicamos para efetuar o login. E quando localizarmos essa requisição, é necessário atentar-se ao campo form-data, que possui os parâmetros da requisição POST:
Para o exemplo da imagem acima onde temos no Form Data os parâmetros username, password e uriOnError, o código fica da seguinte forma:
with requests.Session() as session:
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36'}
payload = {'username': USERNAME, 'password': PASSWORD, 'uriOnError': ''}
s = session.post(url, payload, headers)
s = session.get(url_interna)
soup = BeautifulSoup(s.text, 'html.parser')
Continua...