susheng 发表于 2022-8-27 23:31

批量抓取公众号文章导出pdf生成书签

我之前的帖子发过批量下载公众号文章和数据(阅读数点赞数在看数留言数),今天分享批量下载公众号文章导出pdf, 合并成一个带书签的pdf文件,代码如下:

from PyPDF2 importPdfFileReader, PdfFileWriter,PdfFileMerger
file_writer = PdfFileWriter()
merger = PdfFileMerger()
num = 0
for root, dirs, files in os.walk('.'):
    for name in files:
      if name.endswith(".pdf"):
            print(name)
            file_reader = PdfFileReader(f"{name}")
            file_writer.addBookmark(html.unescape(name).replace('.pdf',''), num, parent=None)
            for page in range(file_reader.getNumPages()):
                num += 1
                file_writer.addPage(file_reader.getPage(page))
with open(r"公众号文章合集.pdf",'wb') as f:
    file_writer.write(f)

效果如图,以莫言的公众号为例,点击左侧书签跳转到对应文章:




当然也可以将pdf的书签导出到excel,代码:
def bookmark_export(lines):
    bookmark = ''
    for line in lines:
      if isinstance(line, dict):
            bookmark += line['/Title'] + ','+str(line['/Page']+1)+'\n'
      else:
            bookmark_export(line)
    return bookmark
with open('公众号文章合集.pdf', 'rb') as f:
    lines = PdfFileReader(f).getOutlines()
    bookmark = bookmark_export(lines)
with open('公众号文章合集.csv', 'a+', encoding='utf-8-sig') as f:
    f.write(bookmark)

效果如图:


susheng 发表于 2022-9-3 20:26

简单一句话就是批量合成pdf,效果 https://www.aliyundrive.com/s/Q6L8wUwFZmi

susheng 发表于 2022-8-28 19:24

daymissed 发表于 2022-8-28 19:19
就是我想下载公众号太多了,也不想全部下载他们的文章,这个啥办?

过滤下时间就行,或者加个关键词过滤

wangyou918918 发表于 2022-8-29 13:31

哦哦~差点评论里找楼主要以前的链接了,想了想作为论坛老鸟居然忘了点名字查看帖子这种基操。。。真是老糊涂了。。。。灰常有用~多谢分享~~

ysdy 发表于 2022-8-28 05:18

非常有用!感谢楼主

king0king 发表于 2022-8-28 07:10

感谢楼主

lgh978 发表于 2022-8-28 07:16

感谢楼主无私分享

lingweiqiu 发表于 2022-8-28 08:15

感谢楼主分享

KXDXL 发表于 2022-8-28 08:22

感谢分享

cnkiller 发表于 2022-8-28 08:52

感谢分享,这个好

sdvip168 发表于 2022-8-28 09:31

楼主你好,可以打包成软件吗

WM715 发表于 2022-8-28 09:33

感谢楼主分享!

just4p 发表于 2022-8-28 09:37

如果是个成品,对于我们这种小白是十分友好的{:1_918:}
页: [1] 2 3 4 5 6 7
查看完整版本: 批量抓取公众号文章导出pdf生成书签