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
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:
ResponderExcluirfrom 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 ')