feedparser для Reddit возвращается пустым - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь использовать 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)

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Рассмотрите возможность изменения:

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 перенаправляет правильно.

0 голосов
/ 11 декабря 2018

Я думаю, что это связано с предыдущей записью, касающейся проблемы SSL с фидпарсером при разборе RSS-канала HTTPS - 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}")

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

...