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.051 ]

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

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

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

Leitura recomendada

Python - Threads

Introdução ao clib (Command Line Book)

Convertendo Texto em Fala com Python e pyttsx3

Desenvolvendo aplicações GUI simples em Python & Glade (PyGTK) com banco de dados SQLite

Pydev - Preparando o Eclipse para o Python

  
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