Получение rss точно такого же формата

Позвольте мне перейти прямо, я пытаюсь сделать читательское веб-приложение похожим на google reader, feedly и т. Д. Поэтому я пытаюсь получить rss by python с помощью библиотеки feedparser. Дело в том, что все rss сайта не в том же формате, я имею в виду, что некоторые из них не имеют названия, а некоторые не имеют даты публикации в RSS. Тем не менее, я обнаружил, что digg.com/reader очень полезен. Читатель digg тоже получает rss с датой публикации и названием, мне интересно, как эта штука работает? Кто-нибудь получил подсказку или любая маленькая помощь будет оценена

2 ответа

Вы можете использовать feedparser, чтобы узнать, есть ли у сайта атом или rss, а затем иметь дело с каждым типом. Если у сайта нет даты или заголовка публикации, вы можете извлечь их, используя другие библиотеки, такие как g oose-extractor (Например:

from newspaper import Article
import feedparser

def extract_date(url):
    article = Article(url)
    article.download()
    article.parse()
    date=article.publish_date
    return date

d=feedparser.parse("http://feeds.feedburner.com/webnewsit") #an italian website
d.entries[0] # the last entry
try :
    d.entries[0].published
except AttributeError:
    link_last_entry=d.entries[0].link
    publish_date=extract_date(link_last_entry)

Дайте мне знать, если вы еще не получили дату публикации

Недавно я сделал несколько проектов с библиотекой анализатора каналов, и это может быть очень неприятно, поскольку многие RSS-каналы отличаются. Для меня больше всего работает что-то вроде этого:

#to get posts from hackaday.com
import feedparser
feed = feedparser.parse("http://www.hackaday.com/blog/feed/") #get feed from hackaday
feed = feed['items'] #Get items in feed (this is the best way I've found)
print feed[0]['title'] #print post title
print feed[0]['summary'] #print post summary
print feed[0]['published'] #print date published

Это лишь некоторые из различных "полей", которые есть у анализатора каналов. Чтобы найти нужную вам команду, просто запустите эти команды в оболочке python и посмотрите, что соответствует вашим потребностям.

Другие вопросы по тегам