CoderCastrov logo
CoderCastrov
Парсер

Код на Python для извлечения изображений из поиска Google

Код на Python для извлечения изображений из поиска Google
просмотров
2 мин чтение
#Парсер

Парсинг - это извлечение данных из HTML. Мы можем сделать это, используя BeautifulSoup.

В этой статье я расскажу, как извлечь изображения из поиска Google, используя BeautifulSoup на Python. Если вы понимаете это, вы сможете легко загрузить множество изображений из Google для использования в анализе данных или для личного использования.

В первую очередь установите ключевые слова поиска, для которых вы хотите получить изображение

search_words = ["Луффи", "Зоро", "Нами", "Санджи", "Чоппер"]

Укажите путь, куда вы хотите скачать изображения

img_dir = "./папка_с_изображениями/"

Повторите извлечение для каждого слова

for word in search_words:
    dir_path = img_dir + word
    if not os.path.exists(dir_path):
        os.makedirs(dir_path)

Сделайте слово подходящим для URL

urlKeyword = parse.quote(word)

# Создание URL с ключевым словом 
url = 'https://www.google.com/search?hl=jp&q=%27 + urlKeyword + '&btnG=Google+Search&tbs=0&safe=off&tbm=isch'

# Заголовки необходимы при отправке запроса 
headers = {"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0"}

# апрос с использованием URL и заголовков 
request = req.Request(url=url, headers=headers) page = req.urlopen(request)

страница, которую вы получили, в кодировке utf-8

html = page.read().decode('utf-8')

** Используйте Beautiful Soup с "html.parser". Объект HTML доступен в Python.** html = bs4.BeautifulSoup(html, "html.parser")

#.rg_meta.notranslate используется для извлечения данных без разрешения (не уверен) 
elems = html.select('.rg_meta.notranslate')
counter = 0 error_counter = 0

for ele in elems: ele = ele.contents[0].replace('"','').split(',') eledict = dict()

#imageURL указан здесь. Для каждого элемента e в ele: 
num = e.find(':'')
eledict[e[0:num]] = e[num+1:]
imageURL = eledict['ou']

#Получение URL: извлечение imageURL из file_path

#Попытка загрузки изображения, в случае ошибки выполнить программу except
try:
    file_path = dir_path + "/" + str(counter) + ".jpg"
    urlretrieve(imageURL, file_path)
    counter += 1
except Exception as e:
    error_counter += 1
    if counter == 1:
        print("Начало загрузки", word)
    if counter == 200:
        break
    print("{} ошибок из ".format(counter, error_counter))

Давайте попробуем!

Сейчас загружается.

О, отлично!!

Я смог сохранить много изображений Луффи!

Вы можете попробовать другое слово для поиска, просто заменив переменные выше.