使用 FeedParser 导入 RSS 并将帖子和一般信息获取到单个 Pandas DataFrame

问题描述

我作为一名 Python 新手正在做一个练习,练习在 Python 中导入数据。最终,我想分析来自不同播客的数据(播客本身每一集的信息),方法是将数据放入使用 NLP 处理的连贯数据框架中。

到目前为止,我已经成功阅读了 RSS 提要列表,并获得了 RSS 提要(一篇帖子)的每一集的信息。

但是我很难在 python 中找到一个集成工作流程来收集两者

  1. 有关 RSS 源的每一集的信息(帖子)
  2. 以及有关 RSS 提要的一般信息(例如播客的标题) 一口气。

代码 这是我到目前为止所得到的

import Feedparser
import pandas as pd

RSS_Feeds = ['http://Feeds.Feedburner.com/TEDTalks_audio','https://joelhooks.com/RSS.xml','https://www.sciencemag.org/RSS/podcast.xml',]
#number of Feeds is reduced for testing

posts = []
Feed = []
for url in RSS_Feeds:
       Feed = Feedparser.parse(url)
       for post in Feed.entries:
           posts.append((post.title,post.link,post.summary))

df = pd.DataFrame(posts,columns=['title','link','summary'])

输出 数据框包括三列的 652 个非空对象(如预期)——基本上是每个播客中的每个帖子。 title 列指的是剧集的标题,但不是指的是播客的标题(在本例中是“Ted Talk Daily”)。

标题 链接 总结
0 问自己关于你所有事情的 3 个问题...... https://www.ted.com/talks/stacey_abrams_3_ques... 你如何应对挫折决定了你...
1 你的睡眠模式说明了你的亲属关系... https://www.ted.com/talks/tedx_shorts_what_you... Wendy Troxel 着眼于文化期望...
2 我们如何才能真正付钱给人们——用...... https://www.ted.com/talks/ted_business_how_we_... Pay 表示,资本主义迫切需要升级......

我也在努力寻找一种方法来将播客的标题也包含到这个数据帧中。我总是在选择部分整个提要信息时出错,例如['Feed']['title']。

感谢每一个提示

来源 我已经习惯了迄今为止基于以下来源的内容Get Feeds from FeedParser and Import to Pandas DataFrame

解决方法

在这种情况下可以使用 feed.feed.title 访问 Feed 标题:

# ...
for url in rss_feeds:
    feed = feedparser.parse(url)
    for post in feed.entries:
        posts.append((feed.feed.title,post.title,post.link,post.summary))

df = pd.DataFrame(posts,columns=['feed_title','title','link','summary'])
df

输出:

          feed_title            title             link          summary
0    TED Talks Daily  3 ways compa...  https://www....  When we expe...
1    TED Talks Daily  How we could...  https://www....  Concrete is ...
2    TED Talks Daily  3 questions ...  https://www....  How you resp...
3    TED Talks Daily  What your sl...  https://www....  Wendy Troxel...
4    TED Talks Daily  How we can a...  https://www....  Capitalism u...
..               ...              ...              ...              ...
649  Science Maga...  Science Podc...  https://traf...  Fear-enhance...
650  Science Maga...  Science Podc...  https://traf...  Discussing t...
651  Science Maga...  Science Podc...  https://traf...  Talking kids...
652  Science Maga...  Science Podc...  https://traf...  The minimum ...
653  Science Maga...  Science Podc...  https://traf...  The origin o...