null119 发表于 2022-2-12 19:04

52Pojie指定文章一键生成PDF,方便收藏查看

本帖最后由 null119 于 2022-2-14 10:39 编辑

油猴版本(支持CSDN):https://www.52pojie.cn/forum.php?mod=viewthread&tid=1587516&page=1&extra=#pid41588981

起因:论坛有不少精彩的文章,有时候想保存方便后续查看,除了加入收藏夹似乎没有什么更好的办法,于是花了几分钟写了下面这段Python代码,同时分享各位


目的:一键获取论坛指定文章生成PDF


# -*- 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+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路径就可以了

homehome 发表于 2022-2-12 20:47

「wkhtmltox-0.12.6-1.msvc2015-win64.exe」https://www.aliyundrive.com/s/w17xj6hFsg6
楼主所提到的wkhtmltopdf,官网下载的有些慢,下载一个64位的放在云盘里,需要的请下载

DeathLYH 发表于 2022-2-12 20:15

很好用,很强大

夜泉 发表于 2022-2-12 19:14

不错哦,加油~

血情 发表于 2022-2-12 20:10

有exe软件,就更好了

torrent 发表于 2022-2-12 20:11

前排支持

homehome 发表于 2022-2-12 20:16

这个工具很强{:1_921:}

知心 发表于 2022-2-12 20:58

感谢楼主分享,如果只是想保存的话,在页面上使用打印功能另存为pdf是最方便的

miqi1314 发表于 2022-2-12 21:12

知心 发表于 2022-2-12 20:58
感谢楼主分享,如果只是想保存的话,在页面上使用打印功能另存为pdf是最方便的

是的,我就是这样做的

null119 发表于 2022-2-12 21:16

知心 发表于 2022-2-12 20:58
感谢楼主分享,如果只是想保存的话,在页面上使用打印功能另存为pdf是最方便的

打印功能会将整个页面内容全部保存下来,无关的内容太多了,SO。
页: [1] 2 3 4
查看完整版本: 52Pojie指定文章一键生成PDF,方便收藏查看