feedparser 号称是一个 universal feed parser,使用它我们可轻松地实现从任何 RSS 或 Atom 订阅源得到标题、链接和文章的条目了。

>>> import feedparser

为了建立直观,首先来看一个标准的 item:

<item>
<title><![CDATA[厦门公交车放火案死者名单公布<br/>警方公布嫌犯犯罪证据]]></title>
<link>http://www.infzm.com/content/91404</link>
<description><![CDATA[6月11日下午,厦门BRT公交车放火案47名死亡者名单公布。厦门政府新闻办6月10日发布消息称,有证据表明,陈水总携带汽油上了闽DY7396公交车。且有多名幸存者指认其在车上纵火,致使整部车引起猛烈燃烧。经笔迹鉴定,陈水总6月7日致妻、女的两封绝笔书系陈水总本人所写。]]></description>
<category>南方周末-热点新闻</category>
<author>infzm</author>
<pubDate>2013-06-11 11:24:32</pubDate>
</item>

feedparser 最为核心的函数自然是 parse() 解析 URL 地址的函数,它返回的究竟是什么样的内容呢?

>>> feedparser.parse()
{'bozo': 1,'bozo_exception': xml.sax._exceptions.SAXParseException('no element found'),'encoding': 'utf-8','entries': [],'feed': {},'namespaces': {},'version': ''}

可以看到,得到是一个字典,’feed’(key) 对应的值(value)也是一个字典,’entries’ 则是 list。

基本用法

每个 RSS 和 Atom 订阅源都包含一个标题(d.feed.title)一组文章条目(d.entries)

通常,每个文章条目都有一段摘要(d.entries[i].summary),或者是包含了条目中实际文本的描述性标签(d.entries[i].description)

>>> import feedparser
>>> d = feedparser.parse('http://blog.csdn.net/lanchunhui/rss/list')
  • (1)d.feed

    >>> d['feed']['title']                             # feed 对应一个字典
    '以数学为生,终生学习数学'>>> d.feed.title                                   # 通过属性的方式访问
    '以数学为生,终生学习数学'>>> d.feed.link
    'http://blog.csdn.net/lanchunhui'>>> d.feed.subtitle
    '数学、编程、物理、文字(The nature of reality itself)'
  • (2)d.entries

    >>> type(d.entries)
    list
    >>> len(d.entries)
    20                                                             # 共20篇文章>>> [e.title for e in e.entries][:3]
    ['[原]Spark MLlib(一)正则化特征','[原]Spark 基础 —— sc.broadcast','[原]Scipy 基础 —— 稀疏矩阵']>>> d.entries[0].summary             # 第一篇文章的摘要信息
    >>> d.entries[0].summary == d.entries[0].description
    True# 有些条目可能会不提供 summary 信息# 此时 summary 信息可通过 description 获得

References

[1] python feedparser 使用

实用的 Python 之 feedparser相关推荐

  1. Python培训教程分享:“高效实用” 的Python工具库

    作为一名合格Python技术员,对于Python工具库的使用是少不了的,本期Python培训教程就为大家分享的是""高效实用" 的Python工具库",希望能够 ...

  2. 20 条非常实用的 Python 代码,建议收藏!

    [欢迎关注微信公众号:厦门微思网络] 微思网络(官网):https://www.xmws.cn/ 据说Python之父-Guido Van Rossum打算让CPython更快,速度直接翻五倍,这是实 ...

  3. 8个主流且实用的Python开发工具推荐

    不管是刚入门学习Python还是已经在从事Python开发工作的人,都需要学习和掌握一些Python开发工具和软件.那么,现在已经主流且实用的Python软件有哪些呢?接下来小千就为大家介绍一下学习P ...

  4. Python编程模块里一些小众但是却比较实用的python内置库

    今天带来的是python里一些小众但是却比较实用的python库,一起来看看吧! 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多 ...

  5. 几个常用的python脚本_几个很实用的python脚本

    脚本写的好,下班下得早!程序员的日常工作除了编写程序代码,还不可避免地需要处理相关的测试和验证工作. 例如,访问某个网站一直不通,需要确定此地址是否可访问,服务器返回什么,进而确定问题在于什么.完成这 ...

  6. 用python建云盘_实用的Python(3)超简单!基于Python搭建个人“云盘”

    1 简介 当我们想要从本地向云服务器上传文件时,比较常用的有pscp等工具,但避免不了每次上传都要写若干重复的代码,而笔者最近发现的一个基于Python的工具updog,可以帮助我们在服务器上搭建类似 ...

  7. python创意实用案例-python实用案例

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! (python内部对异常已处理)1 class listiterator(obje ...

  8. 7个实用的Python自动化测试框架

    目录 前言 1.Unittest 2. Doctest 3.pytest 4.Nose 5.tox 6.Unittest2 7.mock unittest. 结语 前言 随着技术的进步和自动化技术的出 ...

  9. 学习必备的50条非常有趣且实用的Python一行代码,值得收藏

    前言 学习必备的50条非常有趣且实用的Python一行代码,值得收藏! 让我们愉快地开始吧~编程学习资料免费点击 开发工具 Python版本: 3.6.4 相关模块: 环境搭建 安装Python并添加 ...

最新文章

  1. leetcode13
  2. [小白进] 大佬们学习为什么简单?小白该如何学习?学历不高如何找工作?副业很好赚?了解后少走弯路
  3. 华为与美国公司就授权5G平台展开初期谈判;Linux 中存在严重漏洞;Microsoft 发布 Cosmos DB GA 版……...
  4. ssh连接虚拟机的linux_openstack系列之运维排障:虚拟机SSH连接失败
  5. Run-Time Check Failure #2 – Stack around the variable 'a' was corrupted.
  6. Acwing第 38 场周赛
  7. ( # #@ ## 在define中的应用)或( 连接两个字符串或者两个数字、强制转化成单引号、强制转化成双引号 )附加字符串强制转化成数字...
  8. 在windows上安装 chocolatey.1.1.0.nupkg
  9. 百度时间显示时间_百度SEO需要多长时间以及如何加快排名?
  10. iPhone 5S对战Google Nexus5:有啥区别
  11. 从阿里外包到年薪40W+的高级测试工程师,我的2年转行经历...
  12. java开发工程师转正述职报告
  13. 简单版 快速掌握实践 SpringBoot继承Shiro框架详解!
  14. POJO、Java Bean是如何定义的
  15. 闲人闲谈之十二——关于工程项目报价综合业务实现
  16. 数据结构(python) —— 【29: 贪心算法之换钱问题】
  17. 【图像去噪】基于matlab多种自适应均值滤波图像去噪【含Matlab 1843期】
  18. 这家公司,竟然解决了这些困扰智能驾驶测试很久的难题
  19. 嵌入式视频监控毕业设计过程中保存的标签。。。嵌入式系统视频信号接收、显示 与存储程序设计与实现
  20. MetaQ中间件原理浅析

热门文章

  1. 报错:Ticket expired while renewing credentials 原因:Hue 集成Kerberos 导致Kerberos Ticket Renewer 起不来
  2. 配置多台机器SSH相互通信信任
  3. Spark面试中的cache和persist
  4. sparksql对hive操作
  5. 剑指offer面试题34. 二叉树中和为某一值的路径(先序遍历)(回溯)
  6. TensorFlow基础篇(四)—— tf.nn.relu()
  7. 一篇文章告诉你[C++]数组初始化
  8. Xamarin.Forms 启动页面的设置
  9. Tosca 给定义变量,取内容放到变量里
  10. Java模板引擎 FreeMarker介绍1