【问题标题】:feedparser for reddit returning empty用于 reddit 的 feedparser 返回空
【发布时间】:2018-12-10 22:23:08
【问题描述】:

我正在尝试使用 python 的 feedparser 从 sub_reddit 获取最新的帖子。

我有下面的代码,但是当我运行它时它没有返回任何东西。

import feedparser

feed = feedparser.parse("http://www.reddit.com/r/funny/new/.rss")
#feed = feedparser.parse("http://feeds.bbci.co.uk/news/england/london/rss.xml")

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
    print (article_title)

【问题讨论】:

    标签: python rss feedparser


    【解决方案1】:

    我认为这与之前的条目有关 feedparser 解析 HTTPS RSS 提要的 SSL 问题 - https://stackoverflow.com/a/28296087/1627968

    添加以下代码可以解决 SSL 问题:

    import ssl
    if hasattr(ssl, '_create_unverified_context'):
        ssl._create_default_https_context = ssl._create_unverified_context
    

    例如,在您的代码中:

    import feedparser
    import ssl
    if hasattr(ssl, '_create_unverified_context'):
        ssl._create_default_https_context = ssl._create_unverified_context
    feed = feedparser.parse("http://www.reddit.com/r/funny/new/.rss")
    #feed = feedparser.parse("http://feeds.bbci.co.uk/news/england/london/rss.xml")
    
    feed_entries = feed.entries
    for entry in feed.entries:
        article_title = entry["title"]
        article_link = entry["link"]
        print(f"{article_title}: {article_link}")
    

    您可能想要检查您为每个条目使用的密钥 - 发布的似乎不是其中之一,因此我在示例中将其删除。

    【讨论】:

      【解决方案2】:

      考虑改变:

      article_published_at = entry.published # Unicode string
      article_published_at_parsed = entry.published_parsed # Time object
      

      到:

      article_published_at = entry.updated
      article_updated_parsed = entry.updated_parsed 
      

      feed = feedparser.parse("https://www.reddit.com/r/funny/new/.rss")
      for entry in feed.entries:
          article_title = entry.title
          article_link = entry.link
          article_published_at = entry.updated
          article_updated_parsed = entry.updated_parsed
          print (article_published_at)
          print (article_updated_parsed)
      

      2018-12-10T22:26:20+00:00
      time.struct_time(tm_year=2018, tm_mon=12, tm_mday=10, tm_hour=22, tm_min=26, tm_sec=20, tm_wday=0, tm_yday=344, tm_isdst=0)
      ...
      

      还要确保使用https 协议,以防feedparser 不遵循http->https 正确重定向。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-30
        • 1970-01-01
        • 2017-06-19
        • 2016-11-25
        • 2020-12-25
        • 1970-01-01
        • 2020-12-05
        相关资源
        最近更新 更多