Python Web Scraping - sites baseados em formulários
No capítulo anterior, vimos sites dinâmicos de raspagem. Neste capítulo, vamos entender a remoção de sites que funcionam com entradas baseadas no usuário, ou seja, sites baseados em formulários.
Introdução
Hoje em dia, a WWW (World Wide Web) está se movendo em direção às mídias sociais, bem como aos conteúdos gerados pelo usuário. Então surge a questão de como podemos acessar esse tipo de informação que está além da tela de login? Para isso, precisamos lidar com formulários e logins.
Nos capítulos anteriores, trabalhamos com o método HTTP GET para solicitar informações, mas neste capítulo trabalharemos com o método HTTP POST que envia informações a um servidor da web para armazenamento e análise.
Interagindo com formulários de login
Ao trabalhar na Internet, você deve ter interagido com formulários de login muitas vezes. Eles podem ser muito simples, como incluir apenas alguns campos HTML, um botão de envio e uma página de ação ou podem ser complicados e ter alguns campos adicionais, como e-mail, deixe uma mensagem junto com o captcha por motivos de segurança.
Nesta seção, vamos lidar com um formulário de envio simples com a ajuda da biblioteca de solicitações Python.
Primeiro, precisamos importar a biblioteca de solicitações da seguinte forma -
import requests
Agora, precisamos fornecer as informações para os campos do formulário de login.
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
Na próxima linha de código, precisamos fornecer a URL na qual a ação do formulário aconteceria.
r = requests.post(“enter the URL”, data = parameters)
print(r.text)
Depois de executar o script, ele retornará o conteúdo da página onde a ação ocorreu.
Suponha que se você deseja enviar qualquer imagem com o formulário, é muito fácil com o request.post (). Você pode entender isso com a ajuda do seguinte script Python -
import requests
file = {‘Uploadfile’: open(’C:\Usres\desktop\123.png’,‘rb’)}
r = requests.post(“enter the URL”, files = file)
print(r.text)
Carregando Cookies do Servidor Web
Um cookie, às vezes chamado de web cookie ou internet cookie, é um pequeno pedaço de dados enviado de um site e nosso computador o armazena em um arquivo localizado dentro de nosso navegador.
No contexto de negociações com formulários de login, os cookies podem ser de dois tipos. Um, tratamos da seção anterior, que nos permite enviar informações para um site e, segundo, que nos permite permanecer em um estado permanente de “logado” durante nossa visita ao site. Para o segundo tipo de formulário, os sites usam cookies para rastrear quem está conectado e quem não está.
O que os cookies fazem?
Atualmente, a maioria dos sites está usando cookies para rastreamento. Podemos entender o funcionamento dos cookies com a ajuda das seguintes etapas -
Step 1- Primeiro, o site autenticará nossas credenciais de login e as armazenará no cookie de nosso navegador. Este cookie geralmente contém um toke gerado pelo servidor, tempo limite e informações de rastreamento.
Step 2- Em seguida, o site usará o cookie como prova de autenticação. Esta autenticação é sempre mostrada sempre que visitamos o site.
Os cookies são muito problemáticos para os web scrapers porque se os web scrapers não rastreiam os cookies, o formulário enviado é enviado de volta e na página seguinte parece que eles nunca se autenticaram. É muito fácil rastrear os cookies com a ajuda de Pitão requests biblioteca, conforme mostrado abaixo -
import requests
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
r = requests.post(“enter the URL”, data = parameters)
Na linha de código acima, o URL seria a página que atuará como o processador do formulário de login.
print(‘The cookie is:’)
print(r.cookies.get_dict())
print(r.text)
Depois de executar o script acima, iremos recuperar os cookies do resultado da última solicitação.
Há outro problema com os cookies que às vezes os sites freqüentemente modificam os cookies sem aviso prévio. Esse tipo de situação pode ser tratadarequests.Session() como segue -
import requests
session = requests.Session()
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
r = session.post(“enter the URL”, data = parameters)
Na linha de código acima, o URL seria a página que atuará como o processador do formulário de login.
print(‘The cookie is:’)
print(r.cookies.get_dict())
print(r.text)
Observe que você pode entender facilmente a diferença entre script com sessão e sem sessão.
Automatizando formulários com Python
Nesta seção, vamos lidar com um módulo Python denominado Mechanize, que reduzirá nosso trabalho e automatizará o processo de preenchimento de formulários.
Módulo mecanizar
O módulo de mecanização nos fornece uma interface de alto nível para interagir com formulários. Antes de começar a usá-lo, precisamos instalá-lo com o seguinte comando -
pip install mechanize
Observe que isso funcionaria apenas no Python 2.x.
Exemplo
Neste exemplo, vamos automatizar o processo de preenchimento de um formulário de login com dois campos, a saber e-mail e senha -
import mechanize
brwsr = mechanize.Browser()
brwsr.open(Enter the URL of login)
brwsr.select_form(nr = 0)
brwsr['email'] = ‘Enter email’
brwsr['password'] = ‘Enter password’
response = brwsr.submit()
brwsr.submit()
O código acima é muito fácil de entender. Primeiro, importamos o módulo mecanizar. Em seguida, um objeto de navegador Mechanize foi criado. Em seguida, navegamos até a URL de login e selecionamos o formulário. Depois disso, os nomes e valores são passados diretamente para o objeto do navegador.