摄影:产品经理
真正的水下长廊
有些同学喜欢写爬虫抓取网上的博客。他们可能会使用 requests 或者 Scrapy 访问目标博客,然后写 XPath 或者 CSS Selector 来提取博客的内容。
但实际上,对很多博客来说,根本不需要这么麻烦。因为这个世界上,还存在一个多年以前很流行,现在被很多人遗忘的东西——RSS。
以我的博客为例:https://www.kingname.info[1]。正常访问时显示如下:
但如果你在域名后面加上/atom.xml
,你就会发现新大陆:
网站最近更新的文章,都在里面了。如果你使用inoreader 或者其他 RSS 工具订阅了这个地址,那么每次博客更新,你直接就能看到内容:
当然,我们不是给这些 RSS 软件打广告,所以我们今天讲讲如何使用 Python 解析 RSS。
RSS 或者 Atom的数据是以 XML 格式储存的,你可以直接使用 Python 的 XML 库来解析,或者使用现成的库,例如feedparser[2]运行效果如下图所示:
使用 pip 安装 feedparser 以后,读取 RSS 非常简单——填写网址、读取数据:
import feedparser
feed = feedparser.parse('https://www.kingname.info/atom.xml')
for article in feed.entries:
print(article.title)
你可以使用article.xxx
读取文章各个维度的数据,例如:
article.content # 文章正文
article.link # 文章 URL
article.published # 文章发布时间
article.updated # 文章更新时间
具体能查看哪个,可以根据 XML 文件中的标签来确定:
运行效果如下图所示:
[1]https://www.kingname.info: https://www.kingname.info [2]feedparser: https://pythonhosted.org/feedparser/