python爬取微信公众号原创文章,生成一本 pdf 电子书

作者:小帅b,微信:xsb_pro

本文阅读需约 4 分钟

这些年我在公众号写了不少原创文章,突然有个想法,能不能把我的原创文章都采集下来,然后分好类,制作成一本妥妥的电子书,然后卖给你们。。。

哦,不!直接送给你们,用老罗的话来说就是:

交个朋友!

我觉得这事有意义,可以干!

可是,怎么干呢?

理一下思路:

  1. 我需要把所有的原创公众号的原创文章链接和标题都采集下来
  2. 接着把文章链接分好类
  3. 把它们生成 PDF 电子书
  4. 开始写篇文章装下逼

嗯嗯,可以。

如何采集原创文章

在电脑打开微信客户端,打开 Fiddler,开启抓包,然后在微信浏览器中打开公众号的历史原创文章:

这时候就可以看到请求这个页面的链接:

点进去可以看到各种请求的参数:

以及返回的 JSON 数据:

把它复制出来格式化一波:

通过一顿分析,可以发现在返回的 JSON 中:

title 字段就是文章标题

content_url 就是文章的链接

can_msg_continue=1 说明下一页还有数据

next_offset 可以获取下一页的数据量

再使用 Fiddler 模拟请求一下,发现数据正常返回:

那么接下来只要用 Python 构造一下请求所需要的 Cookie 等参数不就可以获取了么:

有了请求相关的参数,就可以获取了。

我们通过 get 请求就可以得到返回的 Json 信息,然后把它们解析出来,拿到自己想要的标题和链接,接着存到 csv 里去:

这里通过判断 can_msg_continue ,如果下一页有数据,就继续获取,直到没有为止。

执行一波:

很快,我要的数据就有了:

把链接分好类

我分享的文章中有不同的类型,比如有关于我的一些观点类的,有资源分享的,有技术教程的,有技巧的等等。

我希望每个类别可以形成一个章节,那我就只能通过标题,给它们打上 tag :

然后在 Python 中通过 with open 把数据读取出来重新排好序,放到 list 里面去:

把公众号生成 PDF 电子书

有了链接列表,可以使用 pdfkit 的 from_url 方法,将它们生成 pdf ,但这样直接去使用会有问题。

一来是公众号图片做了懒加载和防盗链,像这样:

二来是现在抓取到文章的链接里面有很多不必要的东西,直接使用 pdfkit.from_url 会报错,特别是你列表链接很多的时候:

那咋办呢?

理一下思路:

请求每个链接,拿到具体文章

将其中的图片引用 data-src 改为 src

使用正则表达式,只获取文章内容和格式

将它们重构为新的 HTML 

将所有重新整理好的 HTML 文件存储到本地并生成一个 file_list

使用 pdk.from_file 生成 pdf 文件

这里在生成 pdf 可以传入 options 和 toc 参数,用来做一些生成 pdf 的配置,比如生成电子书的目录 toc,可以引用 xsl:

在这里面就可以定义自己想要的样式,比如我可以判断如果标题含有 Chapter,我就给目录加个背景颜色:

至此,整个流程就搞完了,运行起来就可以生成一本电子书。

接下来,前方高能预警:

光目录就 16 页,整本书 1900+ 页,蹲再多次马桶也够看了。

你觉得这本书值多少钱?反正我就是想送给你,交个朋友。

进入公众号,发送 「帅书」,直接拿下。

希望对你有帮助,那么我们下回见,peace!

发表回复