4.7 KiB
在 Python 中使用 Feedparser
原文:https://www.pythonforbeginners.com/feedparser/using-feedparser-in-python
概观
在本帖中,我们将看看如何使用 Python 下载和解析整合的 提要。
我们将使用的 Python 模块是“Feedparser”。
完整的文档可以在这里找到。
什么是 RSS?
RSS 代表 Rich Site Summary,使用标准的 web feed 格式发布经常更新的信息:博客条目、新闻标题、音频、视频。
一个 RSS 文档(称为“feed”、“web feed”或“channel”)包括完整或 摘要文本,以及元数据,如出版日期和作者姓名。来源
什么是 Feedparser?
Feedparser 是一个 Python 库,可以解析所有已知格式的提要,包括 Atom、RSS 和 RDF。它可以在 Python 2.4 一直运行到 3.3。来源
RSS 元素
在我们安装 feedparser 模块并开始编码之前,让我们看一看一些可用的 RSS 元素。
RSS 提要中最常用的元素是“标题”、“链接”、“描述”、“T0”、“发布日期”和“条目 ID”。
不太常用的元素是“图像”、“类别”、“附件”和“云”。
安装 Feedparser
要在你的电脑上安装 feedparser,打开你的终端,使用 " pip" (一个安装和管理 Python 包的工具)进行安装
sudo pip 安装 feedparser
要验证是否安装了 feedparser,可以运行一个“pip list”。
当然,您也可以进入交互模式,并在那里导入 feedparser 模块。
如果您看到如下输出,您可以确定它已经安装。
>>> import feedparser
>>>
既然我们已经安装了 feedparser 模块,我们就可以开始使用它了。
获取 RSS 源
你可以使用任何你想要的 RSS 源。因为我喜欢读 Reddit 的文章,所以我用 T2 的文章作为例子。
reddit 由许多子 Reddit 组成,我现在对 特别感兴趣的是“Python”子 Reddit。
获取 RSS 提要的方法是只需查找该子 reddit 的 URL 并 添加一个“rss”给它。
我们需要的 python 子 reddit 的 RSS 提要是: http://www.reddit.com/r/python/.rss
使用 Feedparser
您从导入 feedparser 模块开始您的程序。
import feedparser
创建提要。放入你想要的 RSS 源。
d = feedparser.parse('http://www.reddit.com/r/python/.rss')
频道元素在 d.feed 中可用(还记得上面的“RSS 元素”吗)
这些项目在 d.entries 中可用,这是一个列表。
您访问列表中的项目的顺序与它们在 原始提要中出现的顺序相同,因此第一个项目在 d.entries[0]中可用。
打印源的标题
print d['feed']['title']
>>> Python
解析相对链接
print d['feed']['link']
>>> http://www.reddit.com/r/Python/
解析转义的 HTML
print d.feed.subtitle
>>> news about the dynamic, interpreted, interactive, object-oriented, extensible
programming language Python
查看条目数量
print len(d['entries'])
>>> 25
提要中的每个条目都是一个字典。使用[0]打印第一个条目。
print d['entries'][0]['title']
>>> Functional Python made easy with a new library: Funcy
打印第一个条目及其链接
print d.entries[0]['link']
>>> http://www.reddit.com/r/Python/comments/1oej74/functional_python_made_easy_with_a_new_
library/
使用 for 循环打印所有文章及其链接。
for post in d.entries:
print post.title + ": " + post.link + "
"
>>>
Functional Python made easy with a new library: Funcy: http://www.reddit.com/r/Python/
comments/1oej74/functional_python_made_easy_with_a_new_
library/
Python Packages Open Sourced: http://www.reddit.com/r/Python/comments/1od7nn/
python_packages_open_sourced/
PyEDA 0.15.0 Released: http://www.reddit.com/r/Python/comments/1oet5m/
pyeda_0150_released/
PyMongo 2.6.3 Released: http://www.reddit.com/r/Python/comments/1ocryg/
pymongo_263_released/
.....
.......
........
报告馈送类型和版本
print d.version
>>> rss20
对所有 HTTP 头的完全访问权限
print d.headers
>>>
{'content-length': '5393', 'content-encoding': 'gzip', 'vary': 'accept-encoding', 'server':
"'; DROP TABLE servertypes; --", 'connection': 'close', 'date': 'Mon, 14 Oct 2013 09:13:34
GMT', 'content-type': 'text/xml; charset=UTF-8'}
只需从头部获取内容类型
print d.headers.get('content-type')
>>> text/xml; charset=UTF-8
使用 feedparser 是解析 RSS 提要的一种简单而有趣的方式。
来源
http://www.slideshare.net/LindseySmith1/feedparser http://code.google.com/p/feedparser/