reddit 的 feedparser 返回空
feedparser for reddit returning empty
我正在尝试将 feedparser 与 python
一起使用,以从 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)
我认为这与之前关于 feedparser 解析 HTTPS RSS 提要的 SSL 问题的条目有关 -
添加以下代码可解决 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}")
您可能想要检查您用于每个条目的密钥 - 已发布似乎不是其中之一,因此我在我的示例中将其删除。
考虑更改:
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
正确重定向。
我正在尝试将 feedparser 与 python
一起使用,以从 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)
我认为这与之前关于 feedparser 解析 HTTPS RSS 提要的 SSL 问题的条目有关 -
添加以下代码可解决 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}")
您可能想要检查您用于每个条目的密钥 - 已发布似乎不是其中之一,因此我在我的示例中将其删除。
考虑更改:
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
正确重定向。