首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一键下载:将知乎专栏导出成电子书

老是有同学问,学了 Python 基础后不知道可以做点什么来提高。今天就再用个小例子,给大家讲讲,通过Python爬虫,可以完成怎样的小工具。

在知乎上,你一定关注了一些不错的专栏(比如 Crossin的编程教室)。但万一有那么一天,你喜欢的答主在网上被人喷了,一怒之下删帖停更,这些好内容可就都看不到了。尽管这是小概率事件(可也不是没发生过),但未雨绸缪,你可以把关注的专栏导出成电子书,这样既可以离线阅读,又不怕意外删帖了。

只是需要工具和源码的可以拉到文章底部获取代码。

【最终效果】

运行程序,输入专栏的 id,也就是网页地址上的路径:

之后程序便会自动抓取专栏中的文章,并按发布时间合并导出为pdf文件。

【实现思路】

这个程序主要分为三个部分:

抓取专栏文章地址列表

抓取每一篇文章的详细内容

导出PDF

1. 抓取列表

在之前的文章

爬虫必备工具,掌握它就解决了一半的问题

中介绍过如何分析一个网页上的请求。按照其中的方法,我们可以通过开发者工具Network 功能找出专栏页面获取详细列表的请求:

观察返回结果中发现,通过 和 的值,我们能获取下一次列表请求的地址(相当于向下滚动页面的触发效果)以及判断是否已经拿到所有文章。

而 中的 、、 就是我们需要的数据。因为 可以通过 拼出,所以我们的代码里未保存它。

使用一个 while 循环,直到抓取完所有文章的 和 ,保存在文件中。

2. 抓取文章

有了所有文章的 / ,后面的抓取就很简单了。文章主体内容就在 的标签中。

需要稍微花点功夫的是一些文本上的处理,比如原页面的图片效果,会加上 标签和 、 这样的属性,我们为了正常显示得把它们去掉。

到这一步,就已经完成了所有内容的抓取,可以在本地阅读了。

3. 导出 PDF

为了更便于阅读,我们使用wkhtmltopdf+pdfkit,将这些 HTML 文件打包成 PDF。

wkhtmltopdf 是一个 HTML 转 PDF 的工具,需要单独安装,具体可参考它的官网介绍。

https://wkhtmltopdf.org/downloads.html

https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf

pdfkit 是对此工具封装的 Python 库,可从 pip 安装:

使用起来很简单:

这样就完成了整个专栏导出。

不仅是知乎专栏,几乎大多数信息类网站,都是通过1.抓取列表2.抓取详细内容这两个步骤来采集数据。因此这个代码稍加修改,即可用在很多别的网站上。只不过有些网站需登录后访问,那么就需要对headers里的cookie信息进行设置。此外,不同网站的请求接口、参数、限制都不尽相同,所以还是要具体问题具体分析。

关于这些爬虫的开发技巧,都可以在我们的爬虫实战课程中学到。有需要的请在公众号里回复爬虫实战

【源码下载】

获取知乎专栏下载器源码,请在公众号(Crossin的编程教室)里回复关键字知乎

除了代码外,本专栏打包好的 PDF也一并奉上,欢迎阅读与分享。

如需了解视频课程及答疑群等更多服务,请号内回复码上行动

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180809B0SN0M00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券