需要将微信公众号的文章导出来存档,从网上找了个微信文章搜索下载助手,倒是很方便的把所有历史消息列表导出了,但在将列表所有文章存为PDF文件时,作者要求付费,只好将列表文件导出来,然后写了段代码自己保存PDF
其中用到部分工具:
1、pdfkit工具,这个可以通过PIP安装,但之前要安装wkhtmltox,下载解压至D盘。
2、selenium,PIP安装即可。附加工作是下载与本机的chrome版本适应的chromedriver,复制到chrome目录,并把chrome目录添加到系统变量path中
3、urllib,pip安装,用以保存图片,之所以用urllib保存图片而不是通过pdfkit保存,因为pdfkit工具保存微信文章中的图片出现异常.
注意:微信图片在较老的文章中,用的URL是http而不是HTTPS,此处不再处理
import pdfkit
import re #python中利用正则,需要导入re模块
import io
import time
import random
from selenium import webdriver
from urllib.request import urlretrieve
path_wk = r'D:\wkhtmltox\bin\wkhtmltopdf.exe' #wkhtmltox安装位置
config = pdfkit.configuration(wkhtmltopdf = path_wk)
f=open(r"d:\hl\list.txt","r",encoding='utf-8') #打开url列表
'''
形如:
文章标题||http://....
文章标题||http://....
'''
listurl=f.readlines()
driver = webdriver.Chrome()
driver.maximize_window()
i=0
for urlline in listurl:
tt,url=urlline.split("||") #分析出标题与url
try:
pdfkit.from_url(url, r'd:\hl\pdfs\{}.{}.pdf'.format(i,tt), configuration=config) #保存网页的PDF
driver.get(url)
doc = driver.page_source #获得页面源代码
pic_url = re.findall('src="https://mmbiz.qpic.cn/mmbiz_jpg/(.*?)"',doc,re.S) #取得所有微信文章配图的IMG的URL
for key in pic_url:
imgurl="https://mmbiz.qpic.cn/mmbiz_jpg/"+key
urlretrieve(imgurl, r"D:\hl\pdfs\IMAGES\{}.{}-{}.jpg".format(i,tt,random.randint(10000,99999))) #保存文件
i+=1
except:
print(tt)
time.sleep(3)