Как спарсить 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?