背景

做自媒体的人,尤其是做了一年甚至更久的自媒体人,尤其是通过自媒体还有一些小收入的人,他们最怕自己的公众号内容因为各种原因而丢失,那就太可怕了! 在做自媒体内容上花了太多心血,如果突然一下就没了,那打击是相当大的,所以备份好自己的成果是非常重要的.

像我之前没有这方面意识,最近我做了一个小工具,把公众号文章打包成pdf文件,然后保存到本地,免去后顾之忧.

其实我之前写过了相关的文章,但那个时候写的还不是很好,不算完美,因为打包出来的文件,看不到图片,所以一直觉得有瑕疵!

在看这篇文章之前可以看之前的这两篇, 这样你看这篇文章就不会觉得很突然.

用Python抓取某大V的公众号文章

Python抓取公众号文章并生成pdf文件保存到本地

最近我终于把这个瑕疵给解决了, 另外再解决了其它的几个问题,算是比较完美的升级吧!

先看效果图:

有目录,有图片。

解决图片显示问题,先看生成的pdf文件样子

其实直接获取到公众号文章的url就可以通过pdfkit工具包来生成一个pdf文件,但是这样获取出来的pdf文件图片是显示不出来的。

因为公众号文章里的图片是用data-src来标记的,这在pdf中是不能显示图片,所以我在这里把,data-src替换成了src,然后图片就可以显示出来.

def create_article_content(self, url, text): """文章内容""" str = '点击查看公众号原文'.format( url) + text.replace('data-src', 'src') return str

这部分代码的含义: url 是公众号原文链接,text 是公众号网页内容这里面包含了样式.

因为我把内容抓取过来后,我还想去点击原文,所以有了这个超链接,像上面图片中的【点击查看公众号原文】,再看看如何生成pdf文件.

生成pdf文件

单篇文章生成一个文件

每篇文章就是一个文件,但这种生成文件的方式比较慢,好处就是每篇文章单独成一个文件. 看效果图:

具体代码如下:

def creat_pdf_file(self, title, html_content): html = 'tmp.html' # 这里是存放临时html文件with open(html, 'w', encoding='utf-8') as f: # 点击open函数查看用法,这里是写入不要搞错了 f.write(html_content)try: output_file = 'D:/gzh2/{}.pdf'.format(title)if not os.path.exists(output_file): # 过滤掉重复文件 pdfkit.from_file(html, output_file, configuration=self.config, ) # 注意这里需要配置一下wkhtmltopdfexcept Exception as e: print(sys._getframe().f_code.co_name) print(e)finally: os.remove(html)

title是文件名, html_content是文件内容,这里把文件内容定稿到一个临时的html文件中,然后把这个临时的html文件用pdfkit工具转换成pdf文件.

所有文章生成一个文件

这里是把所有的html文件内容组成一个数组,然后把这些内容列表转换成html的文件列表,然后把html文件列表放到pdfkit中转换成一个pdf文件,这个好处就是比较快速,但是所有的文件都放到一个文件中,感觉不利于阅读,也看各人喜好吧,效果图如下:

看代码

def creat_pdf_file(self): htmls = []for index, file in enumerate(self.html_contents): html = '{}.html'.format(index) # 这里是存放临时html文件 with open(html, 'w', encoding='utf-8') as f: # 点击open函数查看用法,这里是写入不要搞错了 f.write(file) htmls.append(html)try: output_file = 'D:/gzh2/{}_的原创文章_第【{}-{}】篇.pdf'.format(self.gzh_name, (self.index_part - 1) * self.part_offset + 1,self.index_part * self.part_offset)if not os.path.exists(output_file): # 过滤掉重复文件 pdfkit.from_file(htmls, output_file, configuration=self.config, ) # 注意这里需要配置一下wkhtmltopdf except Exception as e:print(sys._getframe().f_code.co_name)print(e)finally:self.html_contents = [] # 生成文件后,清空缓存for file in htmls: os.remove(file)

注意点

我这里是用Charles来通过抓数据来进行分析的,其中获取文件的接口列表与cookie会有变化的,每次请求不同公众号,这里面的数据也不会相同,所以不管了,直接复制charles里的 url和cookie就好了, 所以你不能直接用我代码里的的cookie和base_url

看下面的图:

最后完整代码,关注,转发,后台私信小编“01”获取,公众号回复,赠送Python学习资料。

keil生成hex文件找不到_骚操作!用Python把公众号文章打包成pdf文件,再也不怕找不到了...相关推荐

  1. Firefox浏览器页面输出为pdf文件/Win7Win8系统没有Microsoft print to pdf/微信公众号文章输出为pdf文件

    在火狐浏览器右上角菜单中选择[附加组件] 搜索[print to pdf] 下载如下图的附加组件 安装好后,在需要转换的页面点击右上角,就可以输出pdf文件啦!

  2. .net core 文件流保存图片_如何将图片打包成PDF文件进行保存?

    如何将图片打包成PDF文件进行保存?我们都知道PDF文件是一种电子文档发行和数字化信息传播的理想文档格式,支持跨平台传输.对普通读者而言,用PDF制作的电子书具有纸版书的质感和阅读效果,可以逼真地展现 ...

  3. 如何将spyder打包成exe_如何将图片打包成PDF文件进行保存?

    如何将图片打包成PDF文件进行保存?我们都知道PDF文件是一种电子文档发行和数字化信息传播的理想文档格式,支持跨平台传输.对普通读者而言,用PDF制作的电子书具有纸版书的质感和阅读效果,可以逼真地展现 ...

  4. python微信爬取教程_[python]微信公众号文章爬取

    [python]微信公众号文章爬取 需求 爬取一些微信公众号的文章 数据来源 1.搜狗微信搜索,可以搜索微信公众号文章,但只能显示该公众号最近十篇的文章 2.通过个人微信公众号中的素材管理,查看其他微 ...

  5. python response重头开始_用 Python 抓取公号文章保存成 PDF

    今天为大家介绍如何将自己喜欢的公众号的历史文章转成 PDF 保存到本地.前几天还有朋友再问,能不能帮把某某公众号的文章下载下来,因为他很喜欢这个号的文章,但由于微信上查看历史文章不能排序,一些较早期的 ...

  6. 向微信公众号文章中添加pdf、jpg、png、xlsx等文件

    微信公众平台是一个自媒体平台,它是微信系统的重要组成部分 个人和企业都可以注册一个自己的微信公众号 想要在文章中添加一个可供用户下载编辑的xlsx.xls表格文件 通过公众号平台现有的功能是无法实现的 ...

  7. 向微信公众号文章添加Excel表格文件、PPT演示文稿

    在编辑微信公众号文章时需要手动编辑图文信息 想要在文章中添加一个可供用户下载.编辑的文件时 很多公众号的运营者不知道如何操作 在公众号信息编辑页面是没有添加ppt功能的 今天就推荐给同行们一款可以上传 ...

  8. java 微信文章评论点赞_使用fiddler抓取微信公众号文章的阅读数、点赞数、评论数...

    1 设置fiddler支持https 打开fiddler,在菜单栏中依次选择 [Tools]->[Options]->[HTTPS],勾上如下图的选项: 单击Actions,选择Expor ...

  9. python爬虫能爬取微信密码吗_爬虫如何爬取微信公众号文章

    下篇文章:python爬虫如何爬取微信公众号文章(二) 下下篇连接python爬虫如何实现每天爬取微信公众号的推送文章 因为最近在法院实习,需要一些公众号的数据,然后做成网页展示出来便于查看,之前我倒 ...

最新文章

  1. 【MediaPipe】(3) AI视觉,人脸识别,附python完整代码
  2. php实现cookie加密解密
  3. 百度开源其NLP主题模型工具包,文本分类等场景可直接使用L——LDA进行主题选择本质就是降维,然后用于推荐或者分类...
  4. 网络推广——在网络推广的道路上如何成为一家优秀的网站建设公司
  5. 机器学习week3课后作业
  6. 类的加载连接和初始化
  7. 华为Mate 40工程机曝光:并未采用屏下摄像头
  8. Linux下面MariaDB 管理命令基础使用
  9. [原创]java WEB学习笔记54:Struts2学习之路--- 编写Struts2 的第一个程序,HelloWord,简述 package ,action,result...
  10. shell脚本简单切割字符串
  11. 全局唯一递增的id_细聊分布式ID生成方法
  12. Mac 安装和配置 Maven
  13. Java程序员必备的网盘资源 大集合
  14. (毕业设计资料)基于单片机51单片机智能药盒控制系统设计
  15. 移动端的vm vh是什么
  16. 高斯消元法的c语言编程,用C语言编程高斯全主元消元法
  17. linux挂载ntfs硬盘6,CentOS 6.2 挂载 NTFS格式的硬盘
  18. 常见apn类型说明及配置
  19. ppt转为6页pdf讲义
  20. JNI详解---从不懂到理解

热门文章

  1. ngx_lua模块中的共享内存字典项API
  2. linux php安装memcached扩展
  3. 成为优秀程序员的十个Tips
  4. PHP调用扩展的三种方式:dl() .so ZendEngine
  5. java capacity_关于Java中StringBuffer的capacity问题
  6. PHP获取今天, 本周 ,半月 ,本月 ,本季 ,本年,昨天 ,上月时间段
  7. PHP中利用header设置content-type和常见文件类型的content-type
  8. Java柏林算法,柏林噪音 - 我做错了什么?
  9. 点钞机语音怎么打开_抖音内测语音直播!支持8人在线聊天,一文教你如何玩?...
  10. eureka hostname作用_SpringCloud基础教程(三)-Eureka进阶