2015-12-15 3 views
0

Я пытаюсь разобрать RSS-канал, используя feedparser.Feedparser: inconsistency entry.title

Я получаю название так:

import feedparser 
url = 'http://chem.aalto.fi/en/current/events/rss.xml' 
feed = feedparser.parse(url) 
for entry in feed.entries: 
    title = entry.title 
    print title 

Обычно это работает без проблем, но я столкнулся странный случай. В данном конкретном сырье, названия выглядеть следующим образом:

<title>06.11.2015: Some title text</title> 

Как и следовало ожидать, я иногда получаю:

06.11.2015: Some title text 

... но иногда и это для того же пункта:

11/06/15: Some title text 

Неужели кто-нибудь испытал подобную проблему? Это кажется совершенно случайным.

ответ

2

Это, кажется, ошибка на стороне сервера. Я не видел фид раньше, но мне удалось увидеть оба формата даты, по-видимому, случайным образом при использовании фида.

Если ваша цель - получить согласованную дату и название событий, вы можете использовать дополнительные метаданные xcal в этом фиде. Например, с помощью dateutil:

import feedparser 
import dateutil.parser 
url = 'http://chem.aalto.fi/en/current/events/rss.xml' 
feed = feedparser.parse(url) 
for entry in feed.entries: 
    title = entry.title.split(": ", 1)[1] 
    start_time = dateutil.parser.parse(entry.xcal_dtstart) 
    end_time = dateutil.parser.parse(entry.xcal_dtend) 
    print("{} - {}: {}".format(start_time.date(), end_time.date(), title)) 

EDIT: Кроме того, для чего это стоит, что RSS канал кажется последовательно вывод заголовков в формате 06/15/16 при использовании http://chem.aalto.fi/en/current/events/rss.xml?format=rss и в формате 15.06.2016 при использовании http://chem.aalto.fi/en/current/events/rss.xml?format=atom для запроса.

код, используемый для создания корма (на основе generator="FeedCreator 1.7.6(BH)" на верхней части корма) можно увидеть на https://github.com/ajslater/feedcreator/blob/master/include/feedcreator.class.php

Основываясь на этом, я думаю, что библиотека Feedcreator имеет некоторые непреднамеренные побочные эффекты на основной код который генерирует заголовок записи, и этот побочный эффект, по-видимому, изменяется в зависимости от используемого формата фида. Если формат подачи не задан явно в URL-адресе, он может быть (неправильно) с использованием некоторой кешированной версии либо формата, либо всего содержимого фида. В любом случае, явная настройка формата в URL-адресе, скорее всего, решит эту проблему для вас.

+0

Да. Даты не создают проблем. Но в случае, если я нахожусь в любом другом названии с текстом «текст: больше текста», то это исправление названия приведет к потере содержимого или? Но тот факт, что вы заметили, что разница между этими двумя форматами может быть чрезвычайно полезной. Я буду тестировать его в течение более длительного периода времени, чтобы увидеть, могу ли я получить согласованный вывод по крайней мере из одного из форматов. – apiljic

+0

К сожалению, я не могу это подтвердить. Я просто получил оба формата: format = rss и? Format = atom обоих вариантов в заголовке. – apiljic

+0

Я буду отмечать это как правильный ответ, так как он указывает, откуда возникла проблема. На самом деле решение этого потребует участия от поставщика кормов. – apiljic

Смежные вопросы