@Mishele123

Как парсить яндекс картинки?

Нужно ОБЯЗАТЕЛЬНО использовать реквесты. Вот код:
import os
import requests
from bs4 import BeautifulSoup
import cv2


headers = {
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0"
}

def saveImages(name : str, index : int, item : bytes) -> None:
    if not os.path.exists(name):
        os.mkdir(name)
    file = open(f"{name}/{index}.jpg", "wb")
    file.write(item)
    file.close()
    print("Сохранено")


def downloadImage(text : str) -> []:
    i = 0
    max_count = 50
    main_url = "https://yandex.ru/images/search?text=" + text
    result = requests.get(main_url, headers=headers)
    print(result)
    soup = BeautifulSoup(result.content, "lxml")
    links = soup.findAll("img", class_ = "serp-item__thumb justifier__thumb")
    for link in links:
        try:
            link = link.get("src")
            _img = requests.get("https:" + str(link))
            saveImages(text, i, _img.content)
            i += 1
            print(i)
            if i == max_count:
                break
        except:
            continue           

downloadImage("tiger")


Скачивает только 30 картинок и потом завершает работу (без ошибок). Что делать в данной ситуации?
  • Вопрос задан
  • 540 просмотров
Пригласить эксперта
Ответы на вопрос 2
@calculator212
Скачивает только 30 картинок и потом завершает работу (без ошибок). Что делать в данной ситуации?
В браузере проскролить ленту картинок и найти по какому запросу идёт подзагрузка, выполнять и этот запрос при помощи requests, но не факт, что с requests - это получится, с большой вероятностью придётся использовать selenium для скролинга
PS можно использовать https://serpapi.com/, там 100 реквестов бесплатные
Ответ написан
Комментировать
@temaka
Я в свое время использовал selenium, он умеет грузить страницу и автоматизировать действия на ней, с Яндексом могут возникнуть проблемы из за капчи.
Парсил страницы на Яндекс работе когда она была живая, собирал со страницы необходимые ссылки BeautifulSoup.
Далее обрабатывал ссылке как мне было необходимо. На сколько помню использовал еще fake_useragent
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы