本帖最后由 null119 于 2022-2-14 10:39 编辑
油猴版本(支持CSDN):https://www.52pojie.cn/forum.php?mod=viewthread&tid=1587516&page=1&extra=#pid41588981
起因:论坛有不少精彩的文章,有时候想保存方便后续查看,除了加入收藏夹似乎没有什么更好的办法,于是花了几分钟写了下面这段Python代码,同时分享各位
目的:一键获取论坛指定文章生成PDF
[Python] 纯文本查看 复制代码
# -*- coding: utf-8 -*-
# @Author: Null119
# @Desc: { 52Pojie文章生成PDF }
# @Date: 2022/02/12 17:55
import os,requests,re,pdfkit,urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
def writehtml(path,str):
f = open(path,'w+',encoding='utf-8')
f.write(str)
f.close
def main(savePath,cookie):
url=input('请输入文章URL:')
headers={'Cookie':cookie}
html=requests.get(url.strip(),headers=headers,verify=False).text
title=re.search(r'id="thread_subject">(.*?)<',html).group(1)
print('文章:',title)
td=re.search(r'id="postmessage_\d+">([\S\s]*?)</td>',html).group(1)
img=re.findall(r'<img aid="\d+".*?\)"',td)
for i in img:
exp=re.search('src=.*?file=(".*?").*?\)"',i)
td=td.replace(exp.group(0),'src='+exp.group(1))
td='<html><h1><a href="%s">%s</a></h1><br>%s</html>' % (url.strip(),title,td)
if not os.path.exists(savePath):
os.makedirs(savePath)
if (savePath[:-1]!='/' ) and (savePath[:-1]!='\\'):
savePath=savePath+'/'
writehtml(savePath+'temp.html',td)
print('开始生成pdf,请稍候...')
path_wk = r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe' # wkhtmltopdf安装位置
config = pdfkit.configuration(wkhtmltopdf=path_wk)
options = {
'page-size': 'A4',
'margin-top': '0.75in',
'margin-right': '0.75in',
'margin-bottom': '0.75in',
'margin-left': '0.75in',
'encoding': "UTF-8",
'outline': None
}
pdfkit.from_file([savePath+'temp.html'], savePath+title+'.pdf',options=options, configuration=config)
os.remove(savePath+'temp.html') #删除临时html
print('任务完成!')
if __name__ == '__main__':
cookie='' #访问保存需要登录浏览权限的文章需要设置cookie
savePath='E:/吾爱破解/文章收藏/' #保存PDF的目录
main(savePath,cookie)
效果:
生成文章的标题链接即为文章的原始链接,点击标题即可跳转论坛查看原文
注意:代码中使用了pdfkit库来生成PDF,关于这个库要说明一下,PIP安装后直接使用还是会报错,还需要下载安装wkhtmltopdf
下载地址:https://wkhtmltopdf.org/downloads.html
下载安装完成之后在代码中修改相应的path_wk wkhtmltopdf.exe路径就可以了
|