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

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


Realizando o download de uma imagem dinâmica



O código abaixo realiza o download de uma imagem contendo a linha do tempo em que viveu uma personalidade mundial a partir do site Wolfram Alpha. Seguindo o mesmo princípio é possível efetuar o download de qualquer arquivo (MP3, ODT, RAR etc) que possua um link direto.

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

#coding: UTF-8
import urllib2, re
import sys #módulo necessário para se manipular o arquivo

2. Obtendo o código-fonte da página que contém a imagem:

personalidade = 'Machado de Assis'
personalidade = personalidade.replace(' ','+') #substitui espaços em branco por +
html = urllib2.urlopen('http://www.wolframalpha.com/input/?i=%s' % personalidade).read()

3. Obtendo o link da imagem:

imagem = re.search(r'(<img src=\")(.*?)(" id="i_0300_1)' , html)
#EXEMPLO HTML: <img src="http://www4a.wolframalpha.com/Calculate/MSP/MSP26519797fd6bb45bfb700001d5h1eia88d56dab?MSPStoreType=image/gif&s=14" id="i_0300_1" />

#obtém apenas a URL da imagem
img = imagem.group(2)

4. Obtendo o código-fonte da imagem a partir de uma conexão http:

cod = urllib2.urlopen(img).read()

5. Abre um arquivo binário 'b' para escrita 'w' com o nome 'linha.GIF', escreve o conteúdo da imagem e o fecha:

arquivo = file('linha.GIF','wb')
arquivo.write(cod)
arquivo.close()

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

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

Trabalhando com permutações em ordem lexicográfica crescente

Port Scanner com Python

Python - Threads

Alimentando Desktopcouch com Zeitgeist

  
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