Очистите и загрузите изображения Google с помощью Python

Опубликовано: 2023-01-02

Растущая распространенность парсинга веб-страниц значительно расширила области его использования. Сегодня многие приложения ИИ регулярно передают наборы данных веб-скрейпинга с актуальными данными. Существует регулярный и непрерывный поток данных с целевых веб-сайтов в наборы данных приложений искусственного интеллекта.

Связанный пост: Влияние искусственного интеллекта на успех клиентов в будущем

Обработка изображений — одна из самых популярных областей в приложениях искусственного интеллекта. Обработка изображений — это область компьютерных наук, которая позволяет компьютерам идентифицировать и понимать объекты и людей на изображениях и видео. Как и другие типы искусственного интеллекта, обработка изображений направлена ​​на выполнение и автоматизацию задач, которые воспроизводят человеческие возможности. В этом случае обработка изображений пытается скопировать как то, как люди видят, так и то, как они понимают то, что видят.

Данные, необходимые для разработки алгоритмов и уменьшения допустимой погрешности во многих областях, особенно в проектах по обработке изображений, можно получить с помощью парсинга веб-страниц. В этой статье мы разработаем приложение, которое часто используется в проектах по обработке изображений. Мы будем очищать и загружать изображения Google с помощью языка программирования Python. Итак, приступим.

Настройка проекта

Во-первых, давайте откроем папку на рабочем столе. Давайте откроем терминал в этом пути к файлу и установим необходимые библиотеки, выполнив команду ниже.

pip запрашивает установку bs4

После установки необходимых библиотек создадим в папке файл с именем index.py.

Код

Давайте вставим следующие коды в созданный нами файл index.py.

импортировать запросы, re, json, urllib.request
из bs4 импортировать BeautifulSoupheaders = {
«User-Agent»: «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, например 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)
суп = BeautifulSoup(html.text, «lxml»)

гугл_изображения = []

защита 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)

remove_matched_thumbnails = remove_matched_get_thumbnails(matched_google_image_data=matched_image_data)

matched_resolution_images = re.findall(r”(?:'|,),\[\”(https:|http.*?)\”,\d+,\d+\]”, remove_matched_thumbnails)

full_resolution_images = получить_разрешение_изображения (соответствующие_разрешения_изображения = сопоставленные_разрешения_изображения)

для индекса (image_data, image_link) в перечислении (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}. Загрузка изображения началась')

download_image(image_link=image_link, index=index)

print(f'{index}. изображение успешно загружено')

print(f'скопированные и загруженные изображения: {google_images}')

def remove_matched_get_thumbnails (matched_google_image_data):
вернуть re.sub(
r'\[\"(https\:\/\/encrypted-tbn0\.gstatic\.com\/images\?.*?)\",\d+,\d+\]', "", str(matched_google_image_data ))

защита get_resolution_image (соответствующие_разрешения_изображения):
возвращаться [
bytes(bytes(img, "ascii").decode("unicode-escape"), "ascii").decode("unicode-escape") для img в matched_resolution_images
]

защита convert_image_to_json():
all_script_tags = суп.выбрать («скрипт»)
images_data = ".join(re.findall(r"AF_initDataCallback\(([^<]+)\);", ​​str(all_script_tags)))
fixed_images_data = json.dumps(images_data)
вернуть 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)[«название»],
«image_source_link»: image_data.select_one (targetted_image_base_html_path) [«href»],
«ссылка_изображения»: ссылка_изображения
})

def download_image (ссылка на изображение, индекс):
открыватель=urllib.request.build_opener()
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/101.0.4951.54 Safari/537.36′)]
urllib.request.install_opener(открыватель)
urllib.request.urlretrieve(image_link, f'Scraped_Images/Image_{index}.jpg')

scrape_and_download_google_images()

Если рассматривать коды, то сначала посмотрим на поля со статическими значениями. Следующие поля определены как статические значения. Мы указываем имя и свойства изображения, которое хотим очистить и загрузить, с помощью переменной queryParams.

Читайте также: ChatGPT — его значение для бизнеса

заголовки = {
«User-Agent»: «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/103.0.5060.114 Safari/537.36»
}queryParameters = {"q": "marvel", "tbm": "isch", "hl": "en", "gl": "us", "ijn": "0" }target_image_path = ".isv- р.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)
суп = BeautifulSoup(html.text, «lxml»)

гугл_изображения = []

Метод scrape_and_download_google_images() — это то, с чего начинается поток. целевые изображения очищаются, а затем загружаются в указанную нами папку.

защита 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)

remove_matched_thumbnails = remove_matched_get_thumbnails(matched_google_image_data=matched_image_data)

matched_resolution_images = re.findall(r”(?:'|,),\[\”(https:|http.*?)\”,\d+,\d+\]”, remove_matched_thumbnails)

full_resolution_images = получить_разрешение_изображения (соответствующие_разрешения_изображения = сопоставленные_разрешения_изображения)

для индекса (image_data, image_link) в перечислении (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}. Загрузка изображения началась')

download_image(image_link=image_link, index=index)

print(f'{index}. изображение успешно загружено')

print(f'скопированные и загруженные изображения: {google_images}')

Скачивание очищенного изображения в папку выполняется в методе download_image(image_link=image_link, index=index). Изображение, очищенное этим методом, сохраняется в «Scraped_Images», которые мы ранее добавили в расположение файла проекта.

Примечание. Перед запуском приложения создайте папку «Scraped_Images» в структуре проекта.

def download_image (ссылка на изображение, индекс):
открыватель=urllib.request.build_opener()
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/101.0.4951.54 Safari/537.36′)]
urllib.request.install_opener(открыватель)
urllib.request.urlretrieve(image_link, f'Scraped_Images/Image_{index}.jpg')

Читайте также: Каковы приложения и преимущества блокчейна как услуги для бизнеса?

Бегать

Чтобы запустить приложение, давайте откроем терминал в папке с файлом и выполним следующую команду.

python index.py

После запуска приложения в консоли приложения печатается следующая информация.

1. картинка начала скачиваться
1. изображение успешно загружено
2. изображение начало загружаться
2. изображение успешно загружено
3. изображение начало загружаться
3. изображение успешно загружено
4. изображение начало загружаться
4. изображение успешно загружено
5. изображение начало загружаться
5. изображение успешно загружено
6. изображение начало загружаться
6. изображение успешно загружено
7. изображение начало загружаться
7. изображение успешно загружено
[…]
48. изображение начало загружаться
48. изображение успешно загружено и скачано изображения:
[
{
'image_title': 'Комиксы Marvel — Википедия',
'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': 'Вселенная Marvel — Википедия',
'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 | Официальный сайт фильмов, персонажей, комиксов, телепередач 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': 'Фильмы и шоу Marvel | Дисней+',
'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': 'Введение в Marvel для новичков | ПРОВОДНОЙ',
'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': 'Как смотреть все фильмы Marvel по порядку сюжета - Парад: развлечения, рецепты, здоровье, жизнь, праздники',
'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 | История, персонажи, факты и фильмы | Британика,
'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»: «Капитан Марвел (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'
},
[…]
]

Давайте посмотрим на файл «Scraped_Images», чтобы проверить загруженные изображения.

Scraped Images

Читайте также: Типы корпораций и как зарегистрировать свой стартап

Заключение

Мы сделали парсинг и загрузку изображений Google, которые по какой-то причине были нужны, с помощью python. Если вы хотите получать нужные вам изображения от Google без написания кода, изучите Zenserp API. Вот его мощная и замечательная документация, которая постоянно обновляется.