不写 XPath,照样轻轻松松抓取大部分博客

摄影:产品经理 真正的水下长廊 有些同学喜欢写爬虫抓取网上的博客。他们可能会使用 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/

kingname 攒钱给产品经理买房。