如何在Python 3.7中构建一个简单的RSS阅读器?

时间:2019-05-01 12:20:59

标签: python rss python-3.7 feedparser

我在Python上构建了一个简单的RSS阅读器,但无法正常工作。 此外,我想获得每篇文章的精选图片来源链接,但没有找到解决方法。

  

它向我显示错误:回溯(最近一次通话):文件   第7行中的“ RSS_reader.py”       feed_title = feed ['feed'] ['title']

如果还有其他RSS提要可以正常工作。所以我不明白为什么有些RSS供稿正在工作而有些却没有

所以我想了解为什么代码不起作用以及如何获取帖子的精选图片来源链接 我附上了用Python 3.7编写的代码

import feedparser
import webbrowser

feed = feedparser.parse("https://finance.yahoo.com/rss/")

feed_title = feed['feed']['title']
feed_entries = feed.entries

for entry in feed.entries:

    article_title = entry.title
    article_link = entry.link
    article_published_at = entry.published # Unicode string
    article_published_at_parsed = entry.published_parsed # Time object
    article_author = entry.author
    content = entry.summary
    article_tags = entry.tags


    print ("{}[{}]".format(article_title, article_link))
    print ("Published at {}".format(article_published_at))
    print ("Published by {}".format(article_author))
    print("Content {}".format(content))
    print("catagory{}".format(article_tags))

3 个答案:

答案 0 :(得分:1)

您还可以使用诸如beatifulsoup(https://www.crummy.com/software/BeautifulSoup/bs4/doc/)之类的xml解析器库并创建自定义解析器。可以在此处(https://github.com/vintageplayer/RSS-Parser)找到样本客户解析器代码。可以在这里读到相同的内容(https://towardsdatascience.com/rss-feed-parser-in-python-553b1857055c

尽管库可能有用,但是beautifulsoup是一个非常方便的库,可以尝试。

答案 1 :(得分:0)

几件事。

1)第一个feed['feed']['title']不存在。
2)至少对于此站点entry.author, entry.tags不存在
3)似乎feedparser与python3.7不兼容(它给了我KeyError, "object doesn't have key 'category'

因此,作为起点,请尝试在python 3.6中运行以下代码,然后从那里开始。

import feedparser
import webbrowser

feed = feedparser.parse("https://finance.yahoo.com/rss/")

# feed_title = feed['feed']['title']  # NOT VALID
feed_entries = feed.entries

for entry in feed.entries:

    article_title = entry.title
    article_link = entry.link
    article_published_at = entry.published # Unicode string
    article_published_at_parsed = entry.published_parsed # Time object
    # article_author = entry.author  DOES NOT EXIST
    content = entry.summary
    # article_tags = entry.tags  DOES NOT EXIST


    print ("{}[{}]".format(article_title, article_link))
    print ("Published at {}".format(article_published_at))
    # print ("Published by {}".format(article_author)) 
    print("Content {}".format(content))
    # print("catagory{}".format(article_tags))

祝你好运。

答案 2 :(得分:0)

我已经将 BeautifulSoup 用于初学者 RSS 提要阅读器项目(您需要安装 lxml 才能使其工作,因为我们正在处理 xml):

from bs4 import BeautifulSoup
import requests
url = requests.get('https://realpython.com/atom.xml')

soup = BeautifulSoup(url.content, 'xml')
entries = soup.find_all('entry')

for i in entries:
  title = i.title.text
  link = i.link['href']
  summary = i.summary.text
  print(f'Title: {title}\n\nSummary: {summary}\n\nLink: {link}\n\n------------------------\n') 

您可以在此处找到 Youtube 视频: https://www.youtube.com/watch?v=8HbqO-TfjlI