quarta-feira, 27 de agosto de 2014

Tradicionalmente, trabalhamos com Python no próprio shell baseando-se em linha de comando ou com o Geany, como costumeiramente trabalhamos com os códigos no blog. Em seguida, para publicação e distribuição, utilizamos o Github.

No post de hoje mostraremos como trabalhar com o IPython, uma ótima ferramenta para trabalhar interativamente com Python, diretamente de seu navegador. Qual a vantagem? Além de ser um interpretador rápido e dinâmico, permite uma documentação de código excelente, controle de versão, facilidade de instalação, computação paralela e, claro, open source.  Visite a página oficial em http://ipython.org/index.html.

Para instalar o IPython, utilize o easy_install ou o pip. Após a instalação, basta rodar ipython notebook no prompt de comando. Seu navegador abrirá a seguinte aba:


Clique em "New Notebook". Uma nova aba será aberta para a edição do código:


Vamos começar com nosso código para capturar as imagens de um website. Para nosso post utilizamos a página http://thelisticles.net/most-enigmatic-places-on-earth. Quando falamos em web, uma das inúmeras bibliotecas que podemos trabalhar é a BeautifulSoup. Em nosso post  Web Crawler - Python + Beautiful Soup - Parte 1 fizemos uma introdução às principais características deste módulo.

Em seguida, temos a primeira função do código, que faz a leitura e retorna o HTML.


Na próxima função utilizamos o método findAll do BeautifulSoup para encontrar todas as tags img dentro do código copiado. Após algumas impressões para controle, atribuímos na variável image_links cada uma das urls das imagens que encontramos anteriormente. Assim, para cada link em image_links utilizamos o método urlretrieve para fazer efetivamente o download da imagem.


Assim, vamos rodar nosso código no IPython. Passamos como parâmetro para a função get_images a url que contém as imagens que queremos capturar. Note que é necessário realizar um laço for para fazer a paginação.

Na figura acima tivemos nossa primeira imagem copiada (para a pasta de destino do Python, que no nosso caso é C:\Python27). No total, teremos 10 urls percorridas (i in range(1,11)).

Temos agora uma das partes legais de se trabalhar com o IPython. Além da facilidade na hora da programação podemos, por exemplo, o que fazer com nosso código, pelo tipo de publicação. Podemos utilizar até mesmo um formato HMTL para posteriormente visualizarmos nosso código.

Explore o IPython rodando alguns códigos e percebendo cada uma de suas funcionalidades. Continuaremos nossa série de Análise de Dados no Python utilizando e mostrando mais a ferramenta IPython.

Para quem preferir o código de hoje está disponível em nosso Github.

Um abraço e até o próximo post!




Parte das informações deste blog foram extraídas de

Fernando Pérez, Brian E. Granger, IPython: A System for Interactive Scientific Computing, Computing in Science and Engineering, vol. 9, no. 3, pp. 21-29, May/June 2007, doi:10.1109/MCSE.2007.53. URL: http://ipython.org

1 comentários:

  1. Muito legal seu artigo, gostaria de saber qual é o procedimento para sites que carregam a página por demanda utilizando 'data-lazy-srcset', pois da forma que estou tentando ele só carrega as primeiras 16 imagens e dá erro:

    from bs4 import BeautifulSoup
    import urllib.request , urllib.parse, urllib.error, requests, time

    # funcao que faz a leitura da url e retorna o html
    def html(url):
    html = requests.get(url)
    return BeautifulSoup(html.text, 'lxml')


    def get_images(url):
    soup = html(url)
    images = [img for img in soup.find_all('img')]

    print(str(len(images)) + ' Imagens Encontradas:')
    print('Copiando as imagens para seu diretorio')
    image_links = [each.get('src') for each in images]
    for each in image_links:
    filename = each.split('/')[-1]
    urllib.request.urlretrieve(each, filename)

    return image_links



    get_images('https://pixabay.com/pt/photos/?cat=places')
    print ('Download das imagens completado ')

    ResponderExcluir