没错,我出了本书
本文阅读需约 4 分钟
这些年我在公众号写了不少原创文章,突然有个想法,能不能把我的原创文章都采集下来,然后分好类,制作成一本妥妥的电子书,然后卖给你们。。。
哦,不!直接送给你们,用老罗的话来说就是:
交个朋友!
我觉得这事有意义,可以干!
可是,怎么干呢?
理一下思路:
我需要把所有的原创公众号的原创文章链接和标题都采集下来
接着把文章链接分好类
把它们生成 PDF 电子书
开始写篇文章装下逼
嗯嗯,可以。
如何采集原创文章
在电脑打开微信客户端,打开 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!