【问题标题】:Parse multiple RSS feeds (Python)解析多个 RSS 提要 (Python)
【发布时间】:2017-04-16 17:12:00
【问题描述】:

使用 Feedparser 解析多个 RSS 提要,但此功能不起作用。如何创建一个函数来解析提要并从提要条目中获取链接以进一步推送到推文?

def get():
    rss_url = [
    'http://www.huffingtonpost.com/news/syria/feed/',
    'http://www.nytimes.com/svc/collections/v1/publish  /www.nytimes.com/topic/destination/syria/rss.xml',
    ]

def getHeadlines(rss_url):
    feeds = []
    for url in rss_url:
        feeds.append(feedparser.parse(url))

    for feed in feeds:
        for post in feed.entries:
            return post.link

tweet(getHeadlines(rss_url))

只要我尝试这个,我就能做到 -

RSS_URLS = [
'http://feeds.feedburner.com/RockPaperShotgun',
'http://www.gameinformer.com/b/MainFeed.aspx?Tags=preview',
]

feed = feedparser.parse(RSS_URLS)

for post in feed.entries:
    print post.title

【问题讨论】:

  • 在这种情况下“无济于事”是什么意思?该代码以何种方式没有达到您的预期?请阅读How to Ask 以获取有关提出有效问题的提示;这是您可以做的最重要的事情,以增加获得好答案的机会。
  • 我希望代码能够解析提要并派生提要中每个条目的链接。当我定义一个函数时,它并没有这样做。
  • 请修正代码块的缩进。目前还不清楚哪些行是getHeadlines() 的一部分,哪些行不是。
  • 已修复。希望现在好些了吗?

标签: python-2.7 rss feedparser


【解决方案1】:

returning 在循环中不会导致返回列表;它使函数立即返回。

在这种情况下,您只会得到第一次循环迭代的结果(第一个提要中第一个帖子的第一个链接)。查看您当前getHeadlines(rss_url) 的返回值,了解我的意思。

相反,您可以构建一个链接列表,类似于构建feeds 列表的方式并返回:

links = []
for feed in feeds:
    for post in feed.entries:
        links.append(post.link)

return links

我不确定tweet() 应该是什么,但您可能必须单独发布列表中的每个元素。

【讨论】:

  • 您的意思是创建另一个 URL 列表吗?你能再解释一下吗?
  • @codenovice,我已经更新了我的答案。请看看现在是否清楚。
  • @codenovice,您能否使用我提供的解决方案来完成这项工作?如果是这样,请记得accept it。这会向其他用户显示您找到了解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多