Como enviar um formulário web em Python

Como enviar um formulário web em PythonHoje, vamos ver três maneiras diferentes de enviar um formulário web em Python. Para isso, faremos uma pesquisa na web com duckduckgo.com pesquisando o termo “python” e salvando o resultado como um arquivo HTML. Usaremos os módulos urllib incluídos do Python e dois pacotes de terceiros: requests e mechanize.

Python é uma linguagem de alto nível, dinâmica e interpretada que tem foco na simplicidade sem abrir mão da robustez. Além disso, aprender Python abre um leque de opções para a sua carreira e também facilita seu caminho para aprender outras linguagem de programação.

Veja como o livecoder ViralExploit, de Recife, desenvolve um jogo de cartas virtual em Python:

A Editora NOVATEC está lançando o livro “Curso Intensivo de Python”. Para saber de mais novidades, acessem o Bugginho Academy.

Temos três pequenos scripts para cobrir, então vamos começar!

Enviando um formulário web com urllib

Vamos começar com urllib e urllib2, uma vez que eles estão incluídos na biblioteca padrão do Python. Também importaremos o webbrowser para abrir os resultados da pesquisa para visualização.

Aqui está o código:

A primeira coisa que você tem que fazer quando você quer enviar um formulário web é descobrir o nome do formulário e para qual URL você enviará. Se você for ao duckduckgo e visualizar a fonte, você notará que sua ação está apontando para um link relativo, “/html“. Assim, nosso URL é “http://duckduckgo.com/html“.

O campo de entrada é chamado de “q“. Então, para passar ao duckduckgo um termo de pesquisa, temos de passar para o campo “q“. É aqui que vem a linha urllib.urlencode. Esta linha codifica nosso termo de pesquisa corretamente. Em seguida, abrimos o URL e fazemos a pesquisa. Os resultados serão lidos e gravados no disco.

Finalmente, abrimos nossos resultados salvos usando o módulo webbrowser.

Agora, vamos descobrir como esse processo é diferente quando se usa o pacote requests.

Enviando um formulário web com requests

O pacote requests faz estes envios de uma forma um pouco mais elegante.

Vamos dar uma olhada:

Como enviar um formulário web em PythonCom requests, você só precisa criar um dicionário com o nome do campo como a chave e o termo de pesquisa como o valor.

Em seguida, use requests.post para fazer a pesquisa.

Finalmente, você usa o objeto de solicitação resultante, “r“, e acessa sua propriedade content, que deverá ser salva no disco.

Ignoramos a parte do webbrowser neste exemplo (e no próximo) por brevidade.

Agora, vamos ver como mechanize faz o seu trabalho.

Enviando um formulário web com mechanize

O módulo mechanize tem muitas atributos interessantes para navegar na internet com Python. Infelizmente, ele não suporta JavaScript. Enfim, vamos continuar com o show!

Como você pode ver, mechanize é um pouco mais detalhado do que os outros dois métodos anteriores. Também precisamos dizer-lhe para ignorar a diretiva robots.txt ou ele falhará. Claro, se você quer ser um bom internauta, então você não deve ignorá-lo.

De qualquer forma, para começar, você precisa de um objeto Browser. Então você abre o URL, seleciona o formulário (neste caso, “x“) e configura um dicionário com os parâmetros da busca como antes.

Note que em cada método, a configuração de dict é um pouco diferente.

Em seguida, você envia a consulta e lê o resultado. Agora, basta salvar o resultado no disco e está pronto!

Conclusão

Dos três, requests é, provavelmente, o mais simples. Mechanize, dos três, é os mais detalhado. Este pacote tem muitas utilidades e, na maioria das vezes, é usado para foi feito para raspagem de dados e testes de sites.

Read previous post:
analisando-e-traduzindo-uma-linguagem-alienigena-a-chegada-logogramas-e-a-linguagem-wolfram
Analisando e traduzindo uma linguagem alienígena: “A Chegada”, logogramas e a linguagem de programação Wolfram

Se os alienígenas realmente visitassem a Terra, os líderes mundiais teriam que trazer um cientista para desenvolver um processo para...

Close