Почему парсер останавливается на определённом количестве фото?
Здравствуйте! Использую проект https://github.com/Ulbwaa/YandexImagesParser для прасинга картинок по фильтру. При этом парсер останавливается на 26 фото (ошибка не возвращается). Почему это происходит? (Код прикрепляю)
Parser
|
1 |
import time from ImageParser import YandexImage import httplib2 import time parser = YandexImage() for item in parser.search("стеллажи деревянные отзывы", sizes=parser.size.large): if ('.jpg' in item.url or '.jpeg' in item.url) and (item.url[-3] == '.' or item.url[-4] == '.'): h = httplib2.Http('.cache') PATH = item.url[item.url.rfind('/') + 1::] response, content = h.request(item.url) out = open(f"/Users/aleksandr/PycharmProjects/alexandr/Stillage/{PATH}", "wb") out.write(content) out.close() time.sleep(3) |
Дополнительно:
Содержание
на другом запросе тоже остановка на 26 фото?
Ответы:
Как я понял быстро глянув исходники, он просто берёт выдачу из поиска Яндекс картинок, парсит html, потом берёт данный из data поля. Так вот, на первой странице результатов и будет 30 штук. А далее нужно нажимать кнопочку либо скроллить если браузер и делать запрос на следующую страницу.
Нужно переписать решение на запрос через json.
Можно в ручную в браузере поэкспериментировать и выловить базовые параметры. В ответе json они дают и количество страниц, так что можно спокойно по ним идти.
Форкните срипт перепишите под себя
Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.
Оставить комментарий Отменить
Ответы
- Есть ответ! к записи Как уменьшить масштаб меньше 100% в Windows 10 (22H2)
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Как называется человек, который дизайн придумает для сайта и сверстает его?
- Есть ответ! к записи Можно ли установить Яндекс.Диск на АльтЛинукс?
- Есть ответ! к записи Картинки мутные только на сафари, есть выход?
- Есть ответ! к записи Keenetic. Как настроить SSTP клиент с сертификатом?
- Есть ответ! к записи Чем заменить executor в aiogram 3?
Чтобы понять, почему парсер останавливается на определенном количестве фото, необходимо рассмотреть несколько возможных причин:
1. Лимит запросов: некоторые веб-серверы или API могут иметь ограничение на количество запросов, которые можно сделать в определенный промежуток времени. Если вы делаете слишком много запросов за короткое время, сервер может временно заблокировать доступ к данным. В этом случае, вам нужно будет снизить скорость запросов или запросить дополнительные разрешения.
2. Ошибки в коде: проверьте ваш код парсера на наличие ошибок, которые могут привести к остановке работы после определенного количества фото. Убедитесь, что ваш код правильно обрабатывает все возможные исключения и ошибки, которые могут возникнуть в процессе парсинга.
3. Проблемы с памятью: если ваш парсер использует большое количество памяти для обработки каждого фото, это может привести к остановке работы после определенного количества фото из-за исчерпания ресурсов. Убедитесь, что ваш код оптимизирован и эффективно использует память.
4. Блокировка IP: возможно, ваш IP-адрес был заблокирован сервером из-за слишком частых запросов или других нарушений. В этом случае, вам нужно будет связаться с администратором сервера для разблокировки.
Для дальнейшего анализа проблемы, вам необходимо провести отладку вашего кода, проверить логи сервера на наличие ошибок и связаться с администратором сервиса, с которого вы парсите данные, для выяснения возможных ограничений или проблем с доступом.
Проблема, с которой вы столкнулись, скорее всего, связана с ограничениями на количество запросов или объем данных, которые может обработать ваш парсер.
Если ваш парсер останавливается на определенном количестве фотографий, возможно, что это происходит из-за ограничений на скорость запросов или объем данных, который он может обработать за один раз. Некоторые веб-серверы или API могут иметь лимиты на количество запросов в единицу времени, чтобы предотвратить перегрузку сервера.
Чтобы решить эту проблему, вам нужно проверить документацию API или веб-сервера, с которого вы парсите данные, чтобы узнать о возможных ограничениях. Возможно, вам придется изменить свой парсер таким образом, чтобы он делал запросы с более длительным интервалом времени или обрабатывал данные порциями, а не все сразу.
Также, убедитесь, что ваш парсер правильно обрабатывает ошибки и исключения, которые могут возникать в процессе парсинга данных. Ошибки при обработке большого объема данных могут привести к остановке работы парсера.
Если после всех этих действий проблема не решится, возможно, вам стоит обратиться к разработчикам API или веб-сервера за помощью или рассмотреть возможность использования другого источника данных.