Raspe e baixe imagens do Google com Python
Publicados: 2023-01-02A crescente prevalência de web scraping aumentou consideravelmente suas áreas de uso. Atualmente, muitos aplicativos de IA alimentam conjuntos de dados de raspagem da Web com dados atualizados regularmente. Há um fluxo regular e ininterrupto de dados de sites de destino para os conjuntos de dados de aplicativos de inteligência artificial.
Postagem relacionada: O impacto da inteligência artificial no futuro do sucesso do cliente
O processamento de imagens é uma das áreas mais populares em aplicações de inteligência artificial. O processamento de imagens é um campo da ciência da computação que se concentra em permitir que os computadores identifiquem e entendam objetos e pessoas em imagens e vídeos. Como outros tipos de inteligência artificial, o processamento de imagens visa executar e automatizar tarefas que replicam as capacidades humanas. Nesse caso, o processamento de imagens tenta copiar tanto a maneira como as pessoas veem quanto a maneira como elas entendem o que veem.
Os dados necessários para o desenvolvimento de algoritmos e redução de margens de erro em diversas áreas, principalmente em projetos de processamento de imagens, são obtidos por web scraping. Neste artigo, desenvolveremos um aplicativo muito utilizado em projetos de processamento de imagens. Vamos raspar e baixar imagens do Google com a linguagem de programação Python. Então vamos começar.
Configuração do projeto
Primeiro, vamos abrir uma pasta na área de trabalho. Vamos abrir um terminal neste caminho de arquivo e instalar as bibliotecas necessárias executando o comando abaixo.
solicitações de instalação do pip bs4 |
Depois de instalar as bibliotecas necessárias, vamos criar um arquivo chamado 'index.py' na pasta.
Código
Vamos colar os seguintes códigos no arquivo 'index.py' que criamos.
solicitações de importação, re, json, urllib.request de bs4 import BeautifulSoupheaders = { “User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/103.0.5060.114 Safari/537.36” }queryParameters = {“q”: “marvel”, “tbm”: “isch”, “hl”: “en”, “gl”: “us”, “ijn”: “0” } target_image_path = “.isv-r.PNCib.MSM1fd.BUooTd” html = request.get(“https://www.google.com/search”, params=queryParameters, headers=headers, timeout=30) imagens_google = [] def scrape_and_download_google_images(): images_data_in_json = convert_image_to_json() matched_image_data = re.findall(r'\”b-GRID_STATE0\”(.*)sideChannel:\s?{}}', images_data_in_json) removido_matched_thumbnails = remove_matched_get_thumbnails(matched_google_image_data=matched_image_data) matched_resolution_images = re.findall(r”(?:'|,),\[\”(https:|http.*?)\”,\d+,\d+\]”, removeu_matched_thumbnails) full_resolution_images = get_resolution_image(matched_resolution_images=matched_resolution_images) para índice, (image_data, image_link) em enumerate(zip(soup.select(target_image_path), full_resolution_images), start=1): append_image_to_list(image_data=image_data, image_link=image_link) print(f'{index}. imagem começou a baixar') download_image(image_link=image_link, index=index) print(f'{index}. imagem baixada com sucesso') print(f'imagens copiadas e baixadas: {google_images}') def remove_matched_get_thumbnails(matched_google_image_data): def get_resolution_image(matched_resolution_images): def convert_image_to_json(): def append_image_to_list(image_data, image_link): def download_image(image_link, índice): scrape_and_download_google_images() |
Se examinarmos os códigos, veremos primeiro os campos com valores estáticos. Os campos a seguir são definidos como valores estáticos. Especificamos o nome e as propriedades da imagem que queremos extrair e baixar com a variável queryParams.
Leia também: O ChatGPT – Suas Implicações para os Negócios
cabeçalhos = { “User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/103.0.5060.114 Safari/537.36” }queryParameters = {“q”: “marvel”, “tbm”: “isch”, “hl”: “en”, “gl”: “us”, “ijn”: “0” }target_image_path = “.isv- r.PNCib.MSM1fd.BUooTd” target_image_base_html_path = “.VFACy.kGQAp.sMi44c.lNHeqe.WGvvNb” html = request.get(“https://www.google.com/search”, params=queryParameters, headers=headers, timeout=30) imagens_google = [] |
O método scrape_and_download_google_images() é onde o stream começa. as imagens de destino são raspadas e, em seguida, baixadas para a pasta que especificamos.
def scrape_and_download_google_images(): images_data_in_json = convert_image_to_json() matched_image_data = re.findall(r'\”b-GRID_STATE0\”(.*)sideChannel:\s?{}}', images_data_in_json) removido_matched_thumbnails = remove_matched_get_thumbnails(matched_google_image_data=matched_image_data) matched_resolution_images = re.findall(r”(?:'|,),\[\”(https:|http.*?)\”,\d+,\d+\]”, removeu_matched_thumbnails) full_resolution_images = get_resolution_image(matched_resolution_images=matched_resolution_images) para índice, (image_data, image_link) em enumerate(zip(soup.select(target_image_path), full_resolution_images), start=1): append_image_to_list(image_data=image_data, image_link=image_link) print(f'{index}. imagem começou a baixar') download_image(image_link=image_link, index=index) print(f'{index}. imagem baixada com sucesso') print(f'imagens copiadas e baixadas: {google_images}') |
O download da imagem raspada para a pasta é feito no método download_image(image_link=image_link, index=index). A imagem raspada neste método é salva em “Scraped_Images” que adicionamos anteriormente ao local do arquivo do projeto.
Nota: Crie a pasta “Scraped_Images” na estrutura do projeto antes de executar o aplicativo
def download_image(image_link, índice): opener=urllib.request.build_opener() opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/101.0.4951.54 Safari/537.36′)] urllib.request.install_opener(abridor) urllib.request.urlretrieve(image_link, f'Scraped_Images/Image_{index}.jpg') |
Leia também: Quais são as aplicações e benefícios do Blockchain como serviço para empresas?
Correr
Para executar o aplicativo, vamos abrir um terminal no local do arquivo e executar o seguinte comando.
python index.py |
Após a execução do aplicativo, as seguintes informações são impressas no console do aplicativo.
1. a imagem começou a baixar 1. imagem baixada com sucesso 2. a imagem começou a baixar 2. imagem baixada com sucesso 3. a imagem começou a baixar 3. imagem baixada com sucesso 4. a imagem começou a baixar 4. imagem baixada com sucesso 5. a imagem começou a baixar 5. imagem baixada com sucesso 6. a imagem começou a baixar 6. imagem baixada com sucesso 7. a imagem começou a baixar 7. imagem baixada com sucesso […] 48. imagem começou a baixar 48. imagem baixada com sucesso imagens raspadas e baixadas: [ { 'image_title': 'Marvel Comics – Wikipedia', 'image_source_link': 'https://en.wikipedia.org/wiki/Marvel_Comics', 'image_link': 'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Marvel_Logo.svg/1200px-Marvel_Logo.svg.png' }, { 'image_title': 'Universo Marvel – Wikipédia', 'image_source_link': 'https://en.wikipedia.org/wiki/Marvel_Universe', 'image_link': 'https://upload.wikimedia.org/wikipedia/en/1/19/Marvel_Universe_%28Civil_War%29.jpg' }, { 'image_title': 'Marvel.com | O site oficial de filmes, personagens, quadrinhos e TV da Marvel', 'image_source_link': 'https://www.marvel.com/', 'image_link': 'https://i.annihil.us/u/prod/marvel/images/OpenGraph-TW-1200×630.jpg' }, { 'image_title': 'Marvel Entertainment – YouTube', 'image_source_link': 'https://www.youtube.com/c/marvel', 'image_link': 'https://yt3.ggpht.com/fGvQjp1vAT1R4bAKTFLaSbdsfdYFDwAzVjeRVQeikH22bvHWsGULZdwIkpZXktcXZc5gFJuA3w=s900-ck-c0x00ffffff-no-rj' }, { 'image_title': 'Filmes e shows da Marvel | Disney+', 'image_source_link': 'https://www.disneyplus.com/brand/marvel', 'image_link': 'https://prod-ripcut-delivery.disney-plus.net/v1/variant/disney/DA2E198288BFCA56AB53340211B38DE7134E40E4521EDCAFE6FFB8CD69250DE9/scale?width=2880&aspectRatio=1.78&format=jpeg' }, { 'image_title': 'Uma introdução à Marvel para iniciantes | COM FIO', 'image_source_link': 'https://www.wired.com/2012/03/an-intro-to-marvel-for-newbies/', 'image_link': 'https://media.wired.com/photos/5955ceabcbd9b77a41915cf6/master/pass/marvel-characters.jpg' }, { 'image_title': 'Como Assistir a Todos os Filmes da Marvel em Ordem de História – Desfile: Entretenimento, Receitas, Saúde, Vida, Feriados', 'image_source_link': 'https://parade.com/1009863/alexandra-hurtado/marvel-movies-order/', 'image_link': 'https://parade.com/.image/t_share/MTkwNTgxMjkxNjk3NDQ4ODI4/marveldisney.jpg' }, { 'image_title': 'Marvel Comics | História, personagens, fatos e filmes | Britânica', 'image_source_link': 'https://www.britannica.com/topic/Marvel-Comics', 'image_link': 'https://cdn.britannica.com/62/182362-050-BD31B42D/Scarlett-Johansson-Black-Widow-Chris-Hemsworth-Thor.jpg' }, { 'image_title': 'Capitã Marvel (2019) – IMDb', 'image_source_link': 'https://www.imdb.com/title/tt4154664/', 'image_link': 'https://m.media-amazon.com/images/M/MV5BMTE0YWFmOTMtYTU2ZS00ZTIxLWE3OTEtYTNiYzBkZjViZThiXkEyXkFqcGdeQXVyODMzMzQ4OTI@._V1_FMjpg_UX1000_.jpg' }, […] ] |
Vamos dar uma olhada no arquivo “Scraped_Images” para verificar as imagens baixadas.
Leia também: Tipos de corporações e como incorporar sua startup de negócios
Conclusão
Fizemos a raspagem e o download das imagens do Google, necessárias por algum motivo, com python. Se você deseja obter as imagens necessárias do Google sem escrever nenhum código, explore a API do Zenserp. Aqui está sua documentação poderosa e maravilhosa que é constantemente atualizada.