Python: automatizando a extração de informações na web com expressões regulares

Presenciamos uma grande necessidade e valorização de soluções para recuperação, filtragem e organização de informações da Internet. O presente artigo pretende ilustrar, de forma didática, como automatizar a obtenção de informações dinâmicas em páginas web utilizando a linguagem Python e seu amplo suporte a expressões regulares.

[ Hits: 88.005 ]

Por: Rafael José de Alencar Almeida em 16/09/2009 | Blog: http://www.rafael-labs.com


Obtendo o resultado de buscas no Google



Desenvolver funcionalidades que realizam buscas no Google e tratam os resultados pode ser bastante útil e interessante. Entretanto, ao se obter o código-fonte retornado utilizando os métodos descritos anteriormente, o resultado é desanimante:

"403 Forbidden
Your client does not have permission to get URL /search?q=linux from this server.
... "

Este problema ocorre pois o sistema de busca não aceita o valor informado no campo User-Agent do cabeçalho HTTP da requisição. Por padrão, o valor User-Agent enviado é Python-urllib/versão, onde versão corresponde ao número da versão do módulo urllib. Este valor pode ser obtido da seguinte forma (modo interativo):

>>> from urllib import URLopener
>>> print URLopener.version
Python-urllib/1.17

Para tornar possível a obtenção do código HTML das pesquisas no Google, será necessário alterar o User-Agent da requisição:

1. Definindo a codificação e importando os módulos necessários:

#coding: UTF-8
import urllib2

2. Armazenando a url da pesquisa:

url = 'http://www.google.com/search?q=python'

3. Criando um dicionário atribuindo um novo valor ao campo User-Agent:

No Python, a sintaxe da estrutura associativa dicionário é {chave1:valor1 , chave2:valor2 , chaveN:valorN}.

header = {'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}

4. Instanciando um objeto da classe Request:

requisicao = urllib2.Request(url , None , header)

5. Obtém o código-fonte da página normalmente:

html = urllib2.urlopen(requisicao).read()

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. O módulo urllib2
   3. O módulo re
   4. Obtendo informações sobre o tempo em uma cidade brasileira
   5. Obtendo a última postagem de um perfil no Twitter
   6. Realizando o download de uma imagem dinâmica
   7. Obtendo o resultado de buscas no Google
   8. Conclusão
Outros artigos deste autor

Esteganografia e Esteganálise: transmissão e detecção de informações ocultas em imagens digitais

Automatizando a criação de uma base de conhecimento em Prolog para gerenciar os acessos a um site

Leitura recomendada

Construindo um portscanner TCP com Python

Como isolar seus projetos Python com virtualenv (ambiente virtual)

Download de Arquivos com Verificação do Hash SHA 256

Como criar um keylogger em Python

ISO8583py - Utilizando Python para o tratamento de mensagens ISO8583

  
Comentários
[1] Comentário enviado por valdineisantos em 16/09/2009 - 16:21h

Muito bom seu texto. Como você comentou o BeautifulSoap é bastante util eu sempre procuro pelos elementos da página com ele e não com expressões regulares embora o resultado final seja exatamente o mesmo.

Parabens.

[2] Comentário enviado por wryel em 16/09/2009 - 17:35h

eu fiz essas coisas com o curl do linux uns tempos atras, cheguei a achar a lib pycurl na net mas não tava conseguindo importar pra dentro dos projetos ;|

maior mão na roda seu tutorial =0

[3] Comentário enviado por forkd em 17/09/2009 - 10:17h

Excelente artigo, parabéns!

Poxa, legal ver mais alguém de Barbacena por aqui!
Como eu, é entusiasta de Linux e Python!
Mande um abraço pro prof. Herlon lá na EAFB!

Abraço!

[4] Comentário enviado por jmurray em 26/08/2010 - 09:34h

Era somente isso que faltava para mim migrar para o Linux por definitivo. O que me prende no Windows era a automatização de tarefas para a internet !

[5] Comentário enviado por iKaleo em 09/03/2016 - 15:45h

Estou aprendendo python e php sei uma base por cima também , precisava criar um script em python ou outra se alguem conseguir me ajuda . O programa tem que amarzena um url exemplo var=web.browser.open(http://www.empresa.com.br) quero que quando o usuario digite o site que é empresa e o python vai ficar rodando em segundo plano , assim que o cliente acessar o link ele sera automaticamete rederecionado para meu outro site para ter um controle . alguem tem algum ideia de como posso fazer isso ?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts