Raspe e baixe imagens do Google com Python

Publicados: 2023-01-02

A 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”
targetted_image_base_html_path = “.VFACy.kGQAp.sMi44c.lNHeqe.WGvvNb”

html = request.get(“https://www.google.com/search”, params=queryParameters, headers=headers, timeout=30)
sopa = BeautifulSoup(html.text, “lxml”)

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):
return re.sub(
r'\[\”(https\:\/\/encrypted-tbn0\.gstatic\.com\/images\?.*?)\”,\d+,\d+\]', “”, str(matched_google_image_data ))

def get_resolution_image(matched_resolution_images):
retornar [
bytes(bytes(img, “ascii”).decode(“unicode-escape”), “ascii”).decode(“unicode-escape”) para img em matched_resolution_images
]

def convert_image_to_json():
all_script_tags = sopa.select(“script”)
images_data = “”.join(re.findall(r”AF_initDataCallback\(([^<]+)\);”, str(all_script_tags)))
fixed_images_data = json.dumps(images_data)
return json.loads(fixed_images_data)

def append_image_to_list(image_data, image_link):
google_images.append({
“image_title”: image_data.select_one(targetted_image_base_html_path)[“title”],
“image_source_link”: image_data.select_one(targetted_image_base_html_path)[“href”],
“image_link”: image_link
})

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

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)
sopa = BeautifulSoup(html.text, “lxml”)

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.

Scraped Images

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.