Извлечение изображений из нескольких различных RSS-каналов

Работаю над проектом, который извлекает статьи из 20+ rss-лент и различных форматов лент, где находится изображение статьи.

Я не против, если в некоторых случаях изображение статьи будет отсутствовать, и я вернусь к установленному изображению, но я не хочу, чтобы это происходило чаще, чем в 20 % случаев.

Используя Python & Feedparser (в проекте DJANGO), я достиг следующих результатов:

# Try and get the image url
try: 
    # Looking for images embedded in enclosures
    post_image = sanitize_url(str(c.enclosures[0].href))
except:
    try:
        # Looking for images embedded in media content
        post_image = sanitize_url(str(c.media_content[0]["url"]))
    except:
        try:
            # Looking for images embedded in content
            post_image = sanitize_url(c.content[0]["value"])
        except:
            post_image = "no image found"

Мне пришлось создать функцию sanitize URL, которая делает 3 вещи:

  1. Берет строку, из которой извлекает URL (в ситуациях, когда вышеописанное извлекает больше, чем URL)
  2. Уменьшение URL для удаления параметров, которые могут вызвать проблемы (например, 342.jpg?w=25)
  3. Последняя проверка строки, чтобы убедиться, что она имеет mimetype в случае, если конечный url не является изображением.

Я хожу по кругу, для каждого примера есть несколько RSS-каналов, которые работают, а другие не работают. Разнообразие структур RSS приводит меня в бешенство.

Есть совет, что мне делать? Я не могу продолжать добавлять в нее все новые и новые функции и циклы.

Вернуться на верх