Как спарсить 1000 картинок с гугла. Python requests bs4

Пытаюсь спарсить 1000 картинок с гугла на запросах. Гугл на одной странице выдаёт только 20 картинок, решил собрать ссылки на страницы следующим образом: urls = ['https://www.google.com/search?q=car side view&tbm=isch&start=' + str(index) for index in range(0, 1000, 20)]. Далее с каждой страницы идёт парсинг ссылок на изображения и происходит их загрузка. Проблема в том, что скачиваются только примерно 500 изображений, и далее гугл перестает выдавать их на страницах.

Весь код:

import requests
import os
from bs4 import BeautifulSoup as BS
from fake_useragent import UserAgent
import multiprocessing


headers = {'User-Agent': UserAgent().random}
def download_images(url):

    response = requests.get(url, headers=headers)
    soup = BS(response.text, 'html.parser')

    count = int(url.split('=')[-1])

    for element in soup.find_all('img'):
        try:
            imageUrl = element['src']
            if imageUrl.startswith('http'):
                imgData = requests.get(imageUrl, headers=headers).content
                with open(os.path.join('images', f"car_{count}.jpg"), 'wb') as file:
                    file.write(imgData)
                count += 1
        except Exception as e:
            print(e, len(soup.find_all('img')), url, response.status_code)


if __name__ == "__main__":
    if not os.path.exists('images'):
        os.makedirs('images')

    numImages = 1000

    # ссылки для парсинга картинок
    urls = ['https://www.google.com/search?q=car side view&tbm=isch&start=' + str(index) for index in range(0, numImages, 20)]

    with multiprocessing.Pool(4) as process:
        process.map(download_images, urls)

    print('Images downloaded')

    # запускаю с консоли, input для того, чтобы не закрывалась консоль после выполнения кода
    input()

Пытался поискать, что можно было бы прокинуть в тело запроса для решения проблемы, но ничего не нашел Возможно ли вообще решить данную задачу с requests?


Ответы (0 шт):