Извлечение изображений из нескольких различных 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 вещи:
- Берет строку, из которой извлекает URL (в ситуациях, когда вышеописанное извлекает больше, чем URL)
- Уменьшение URL для удаления параметров, которые могут вызвать проблемы (например, 342.jpg?w=25)
- Последняя проверка строки, чтобы убедиться, что она имеет mimetype в случае, если конечный url не является изображением.
Я хожу по кругу, для каждого примера есть несколько RSS-каналов, которые работают, а другие не работают. Разнообразие структур RSS приводит меня в бешенство.
Есть совет, что мне делать? Я не могу продолжать добавлять в нее все новые и новые функции и циклы.