О новом инструменте для обхода веб-галерей и сбора данных из них.
Для проекта «Нюрнбергский эпилог» мне понадобилось подобрать иллюстрации к аудио.

В сети относительно просто отыскать различные веб-галереи с нужными материалами (фото, видео), но вот искать в них такие, которыми можно проиллюстрировать тот или иной фрагмент аудиозаписи неудобно. Дело усугубляется тем, что материалы обычно располагаются на нескольких страницах, по которыми приходится перемещаться туда-сюда в поисках нужного.

Первое, что пришло в голову — это использовать что-нибудь типа scrapy для разбора страниц. Однако поглядев пристальнее, я понял, что овчинка не будет стоить выделки, то есть заводить что-то большое, типа указанного приложения будет не с руки.

Поэтому я накидал gallerycrawler. Приложение маленькое, но позволяет довольно просто при помощи css-селекторов создать обходчика для веб-галереи.

from galerycrawler.toolbox import Crawler, dump

class MyCrawler(Crawler):
"""Обходчик описывается классом-наследником Crawler."""

selector_listing_next: str = '.page-next a' # ссылка на сл. страницу
selector_listing_thumbnails: str = '.thumbnail img' # мелкое изображение
selector_details: str = '.page-details a' # ссылка на страницы с деталями
selector_details_title: str = '.page-title' # заголовок
selector_details_img: str = '.image img' # оригинальное изображение
selector_details_author: str = '.image-author' # автор

# Запускаем обход и создание страницы
# с содержимым галереи.
dump(
crawler=MyCrawler,
url='https://mysite.some/gallery/',
probe=True, # Этот флаг можно использовать для отладки обходчика
)

Всё довольно просто и минималистично. Возможно кому-то окажется полезным.
Примеры обходчиков можно подсмотреть здесь.

Код приложения, как обычно доступен желающим: gallerycrawler на GitHub.

Проще!
Нет обсуждений для отображения.

Если у вас есть, что сказать, можете представиться и исправить ситуацию.


Категории


На заметку
Зарегистрированные пользователи могут оценивать Книги, Видео, Статьи и прочее, а также добавлять их в избранное, для упрощения доступа к ним в будущем.