【Python】将微信收藏的文章批量导出为pdf

  • 第一步:导出微信收藏的链接
  • 第二步:将所有网址导出为pdf

写在前面
微信收藏了大量的文章,一直没时间看。乘飞机或火车时有闲暇时间但网络不行。本文提供了一种基于python的将微信收藏的公众号推文批量导出为pdf的方法,方便在平板等移动设备离线阅读。

第一步:导出微信收藏的链接

这一步我并没有找到一键导出的办法,选择的方法是:

  1. 先将所有要导出的推文批量多选,并分享给好友或者文件传输助手;

  2. 然后在聊天界面多选并使用邮箱发送;

  3. 可以发送给自己的其他邮箱。邮件的内容便包含了每篇文章的标题的网址;

  4. 将邮件内容粘贴保存为.txt格式,编码类型为ANSI。

第二步:将所有网址导出为pdf

pdf文件名即微信推文标题,部分特殊字符进行了替换。此方法仅适用于微信推文,筛除了不是微信推文的链接。
代码:

import pdfkit
import requests
import os
import re
from bs4 import BeautifulSoup# set the font style
font = '''<style type="text/css">@font-face{font-family: "微软雅黑";src:url("‪C:\\Windows\\Fonts\\msyh.ttc")</style><style type = "text/css">p { font-family: '微软雅黑', cursive;}</style>'''
# 选项
options = {'page-size': 'A6',
#     'margin-top': '0.75in',
#     'margin-right': '0.75in',
#     'margin-bottom': '0.75in',
#     'margin-left': '0.75in','encoding': "UTF-8",
#      'custom-header': headers,
#     'debug-javascript': [''],
#     'javascript-delay': 10000,
#     'no-stop-slow-scripts': "",
#     'load-media-error-handling': 'abort',} path_wkthmltopdf = r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe'
config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)# 替换特殊字符
def validate_title(title):rstr = r"[\/\\\:\*\?\"\<\>\|]"  # '/ \ : * ? " < > |'new_title = re.sub(rstr, "_", title)  # 替换为下划线new_title = new_title.replace(':',' _')new_title = new_title.replace('?','_')return new_titlef = open("E:\\user\\Desktop\\wechat\\url.txt")          # 返回一个文件对象
line = f.readline()
while line:if line[0]=='[':# 读取网址和标题line2 = line[1:-2]urls = line2.split(' : ')url = urls[-1]title = ''.join(urls[0:-1])title = validate_title(title)if url.find('mp.weixin.qq.com') > 0:res = requests.get(url)# data-src替换为src 有时候返回的正文被隐藏了,将hidden去掉html = res.text.replace("data-src", "src").replace('style="visibility: hidden;"',"")soup = BeautifulSoup(html)# 选择正文(去除javascrapt等)html = soup.select('div#img-content')[0]# html_str = str(html)# i = 0# title = html_str.splitlines()[i]# while title[0] == '<' or title.isspace():#     i = i+1#     title = html_str.splitlines()[i]#     title = title.replace('|','-')   # 将字符串里的k全部替换为8# 修改字体html = font + str(html)output = title+'.pdf'pdfkit.from_string(str(html), output, configuration=config, options=options)else:print(title)line = f.readline()
f.close

代码主要参考了【实战】Python将微信文章保存为PDF,使用的是 “wkhtmltopdf” 命令行工具,下载地址:https://wkhtmltopdf.org/downloads.html。
在11寸左右的平板上阅读的话,实测将页面保存为A6是比较合适的,可以在options里设置,具体参数参考Paper Sizes。

在读取txt文档时,参考了一些操作关于python的方法文章,具体如下:

  1. python逐行读取文本
  2. python字符串截取、查找、分割
  3. Python3 读取字符串的第一行
  4. Python拼接字符串的7种方法总结
  5. python字符串去掉特殊符号
  6. Python-替换或去除不能用于文件名的字符

【Python】将微信收藏的文章批量导出为pdf相关推荐

  1. 如何做一个微信公众号文章批量导出的下载器

    作为一名自媒体编辑,我一直密切关注许多文章中写的非常好的公众号文章,每次我都会学习他们的写作方法和思维方式.然而,每当我集中精力学习时,在手机上逐个检查带有文章的链接就更麻烦了.这是一个头痛的问题,我 ...

  2. 【微信采集助手】Python Tkinter 微信公众号文章批量采集工具

    现如今大部分优质内容都是闭环的,都在移动端,app端,或者百度都无法搜录到,比如微信公众号文章内容,而且这些地方还存在着比较高质量的内容,大部分人都有着这方面的采集需求! 其实前面本渣渣已经写过了一篇 ...

  3. python下载微信公众号文章_python如何导出微信公众号文章

    [相关学习推荐:python教程] 1.安装wkhtmltopdf 下载地址:https://wkhtmltopdf.org/downloads.html 我测试用的是windows的,下载安装后结果 ...

  4. python下载微信公众号文章_python如何导出微信公众号文章方法详解

    1.安装wkhtmltopdf 下载地址:https://wkhtmltopdf.org/downloads.html 我测试用的是windows的,下载安装后结果如下 2 编写python 代码导出 ...

  5. python写微信公众号文章_python如何导出微信公众号文章

    [] 1.安装wkhtmltopdf 下载地址:https://wkhtmltopdf.org/downloads.html 我测试用的是windows的,下载安装后结果如下 2 编写python 代 ...

  6. 微信公众号文章批量保存到本地的方法

    其他不多说,直接入主题,目前比较常见的保存微信文章的方法有以下几种,简要分析如下: 1. 手动保存 微信登陆电脑客户端,用自带浏览器打开微信公众号文章,然后选择,复制,粘贴到Word里,进行保存. 这 ...

  7. ai怎样导出所选部分_Illustrator(AI)选定对象批量导出jpg/pdf脚本插件(win/mac)...

    Illustrator(AI)选定对象批量导出jpg/pdf脚本插件(win/mac) 书法字体2020.12.31ai脚本 早前亿品元素给大家分享过一款AI批量导图(jpg/png/svg/pdf) ...

  8. 最新微信公众号文章数据导出软件工具

    相信大家经常都会使用微信软件,对于微信公众号都不陌生,有很多人都会经常阅读公众号的文章.下面集宝数据就给大家说说如何找到好用的微信公众号文章采集器? 如何找到好用的微信公众号文章采集器 第一步:首先, ...

  9. Python自动化办公:将Excel表格内容批量导出为PDF文件

    Python自动处理Excel表格数据 序言 代码实现 序言 上一篇咱们实现了多个表格数据合并到一个表格,本次咱们来学习如何将表格数据分开导出为PDF文件. 部分数据 然后需要安装一下这个软件 wkh ...

最新文章

  1. 第二篇:n-gram 语言模型
  2. HDU 3934 Summer holiday(凸包内接最大三角形)
  3. 【OS学习笔记】十七 保护模式五:保护模式下如何进行内存保护 与 别名段的意义与作用
  4. SAP License:MM中的几个概念
  5. 一个关于 客户端非法取消正在进行的数据提交操作 的问题 的讨论
  6. 计算机网络学习笔记(27. Email应用概述)
  7. Xcode连接git@osc
  8. 微软超融合私有云测试02-测试架构描述
  9. HTTP权威指南—基础部分
  10. ppt大小如何压缩,ppt压缩方法
  11. 0《数学之美》作者、赞誉、说明、序言、前言
  12. C语言--[Error] stray '\237' in program--解决方案。
  13. mac 远程控制android,允许Mac用户使用其Android设备远程控制其Mac媒体
  14. SI5351A的信号发生器驱动程序
  15. 字符串到字节数组和字节数组到字符串的转换(编码和解码问题)
  16. 九章云极发布YLearn因果学习开源项目;字节跳动大量招聘芯片工程师;苹果被俄法院罚款约21.6万元 | 每日大事件...
  17. 【学习小记】常系数齐次线性递推
  18. 杰理之使用 mic_rec_play_start()测试 mic 无声的解决方法【篇】
  19. C语言之__attribute__((visibility(“default“)))等gcc flag讲解(六十二)
  20. 支付宝生活号对接-----(一)授权

热门文章

  1. 嵌入式Linux开发-在6818开发板上显示图案
  2. android手机和电脑通过wifit通信
  3. 提供几个Windows平台语音辅助应用
  4. 生猪价格四个月跌26% 养猪产业链告急
  5. 智慧会议解决方案-最新全套文件
  6. jieba分词三种分词模式、用户自定义词典、停用词词典的使用
  7. 湖首大学计算机硕士学费,2020年湖首大学研究生读几年
  8. 《java入门第一季》之面向对象this关键字
  9. Android 相关属性
  10. Python限定小数位数