百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 软件资讯 > 正文

【全网独家有效】一键爬取微信公众号所有文章,保留格式成PDF!

ninehua 2024-12-30 06:03 95 浏览

还在手动截图或复制粘贴保存微信公众号的好文章?告诉你一个更高效的方法,可以让你自动化将你喜欢的微信公众号文章保存为PDF,而且格式不变!这不仅可以帮你轻松整理、归档文章,还能在作者删除或公众号被封时,依然保留那些珍贵的内容。今天,我将为大家带来一项颠覆性的技术——自动化爬取微信公众号文章并原样保留格式存储为PDF文件!从此告别繁琐,一键搞定!而且是全网独此真正有效代码



一、为何需要下载微信公众号文章为PDF?

微信公众号作为我们获取信息、学习知识的重要渠道,每天都有大量的优质文章涌现。然而,有时候我们会遇到一些不可预见的情况,比如文章被作者删除、微信公众号被封号等,导致我们无法再次找到这些好文章。或者,长按复制链接,打开网页版保存,但总是少了点什么——格式、图片、排版全都变了样。为了避免这些遗憾,将文章下载到本地并保存为PDF格式成为了一个很好的选择。PDF格式具有跨平台、不易修改等特点,能够确保文章内容的完整性和可读性。

二、如何实现微信公众号文章一键爬取并保存为PDF

前提准备

1.注册一个个人微信公众号用来获取想要爬取的公众号的长期地址

注册方法:《https://kf.qq.com/faq/120911VrYVrA151009eIrYvy.html》

2.准备python环境并安装相应的第三方库

pip install requests # 这是爬虫必备库
pip install pdfkit # 用于转pdf的工具库,有一个exe应用程序,
# 可以后台私信获取
pip install wechatsogou # 获取每一篇文章的api接口
pip uninstall Werkzeug # wechatsogou 依赖库默认是3.0.3版本,但是会报各种错误
pip3 install Werkzeug==0.11.15 # 安装正确版本

3.下载软件wkhtmltox 我会放到网盘里,后台私信"pachong"获取下载链接

批量获取微信公众号往期推送的URL、主题和时间

进入微信公众号——左侧草稿箱——新的创作—— 在图文编辑页中选择超链接——搜索你想要爬取的微信公众号名称——F12找到请求链接——复制curl bash——在curlconvert网站中获取请求地址和请求参数——解析获取的结果,得到文章标题、文章时间和文章URL

import requests
import json
import time




def crawl_all_article_url(page):




    cookies = {
    'appmsglist_action_3948617697': 'card',
    'ua_id': 'cPS3GpAA01IEkaRJAAAAAIvDxBMaEL0YwwkNCjBwcAQ=',
    'wxuin': '00617100352084',
    'mm_lang': 'zh_CN',
    'pac_uid': '0_6f1a31a07c4ab',
    'iip': '0',
    '_qimei_uuid42': '17c1a0b23191007d54d4e4bc638bde211f0338f3bf',
    '_qimei_q36': '',
    '_qimei_h38': '8f95287254d4e4bc638bde2102000002517c1a',
    'RK': 'jTHYN6T3Wp',
    'ptcz': '7345f2bcdd021ede2b9e3b5ff3857a614e8f78a9ecdf01650aa9a3a225afd21e',
    'pgv_pvid': '8536395802',
    'ts_uid': '6019633394',
    '__root_domain_v': '.weixin.qq.com',
    '_qddaz': 'QD.243806759066417',
    'qq_domain_video_guid_verify': '6e9c8245aad0e837',
    '_qimei_fingerprint': '36d8e5c4ef2b920cd2da41f5f01ca167',
    '_clck': '3902705164|1|fm1|0',
    'uuid': '4f9478c2739d6acbb0878a2e7b6c7b35',
    'rand_info': 'CAESINjnm2X0Xw6se5Kiw4ayZI9Ft4uFGZEaPM8tGhG8HhAl',
    'slave_bizuin': '3902705164',
    'data_bizuin': '3902705164',
    'bizuin': '3902705164',
    'data_ticket': 'DJqUc+FKg56UrvBm8mHaCSI28Je1eBjufcd/Bb1OMvhzcoXTTFoXRMrQIbNGjKtA',
    'slave_sid': 'cG5yOWQzc0JrX3BNejZmMEhZWG5yN1JFZ1lzMzVWbW85aDZVRHpuSmw2UGVyaTczRFozdGFDMWpvd2ZQckhMbm5tX0pNc1FkcWNBX3VnbEFDZ29pZ3JLNW5hTEdqbm9ROXIyX01GMW5TeUYzQ2RhbUdoZmtldTJDS3N4eWlDYmR0MUd0ZUtqcmkxYjV0UGZj',
    'slave_user': 'gh_19182aefb42a',
    'xid': '081913df3456544c4dc84a51fd52778f',
    '_clsk': '121cm1q|1716519674628|15|1|mp.weixin.qq.com/weheat-agent/payload/record',
}


    headers = {
        'accept': '*/*',
        'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
        # 'cookie': 'appmsglist_action_3948617697=card; ua_id=cPS3GpAA01IEkaRJAAAAAIvDxBMaEL0YwwkNCjBwcAQ=; wxuin=00617100352084; mm_lang=zh_CN; pac_uid=0_6f1a31a07c4ab; iip=0; _qimei_uuid42=17c1a0b23191007d54d4e4bc638bde211f0338f3bf; _qimei_q36=; _qimei_h38=8f95287254d4e4bc638bde2102000002517c1a; RK=jTHYN6T3Wp; ptcz=7345f2bcdd021ede2b9e3b5ff3857a614e8f78a9ecdf01650aa9a3a225afd21e; pgv_pvid=8536395802; ts_uid=6019633394; __root_domain_v=.weixin.qq.com; _qddaz=QD.243806759066417; qq_domain_video_guid_verify=6e9c8245aad0e837; _qimei_fingerprint=36d8e5c4ef2b920cd2da41f5f01ca167; _clck=3902705164|1|fm1|0; uuid=4f9478c2739d6acbb0878a2e7b6c7b35; rand_info=CAESINjnm2X0Xw6se5Kiw4ayZI9Ft4uFGZEaPM8tGhG8HhAl; slave_bizuin=3902705164; data_bizuin=3902705164; bizuin=3902705164; data_ticket=DJqUc+FKg56UrvBm8mHaCSI28Je1eBjufcd/Bb1OMvhzcoXTTFoXRMrQIbNGjKtA; slave_sid=cG5yOWQzc0JrX3BNejZmMEhZWG5yN1JFZ1lzMzVWbW85aDZVRHpuSmw2UGVyaTczRFozdGFDMWpvd2ZQckhMbm5tX0pNc1FkcWNBX3VnbEFDZ29pZ3JLNW5hTEdqbm9ROXIyX01GMW5TeUYzQ2RhbUdoZmtldTJDS3N4eWlDYmR0MUd0ZUtqcmkxYjV0UGZj; slave_user=gh_19182aefb42a; xid=081913df3456544c4dc84a51fd52778f; _clsk=121cm1q|1716519674628|15|1|mp.weixin.qq.com/weheat-agent/payload/record',
        'referer': 'https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2&action=edit&isNew=1&type=77&createType=0&token=1635832127&lang=zh_CN×tamp=1716519674285',
        'sec-ch-ua': '"Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"Windows"',
        'sec-fetch-dest': 'empty',
        'sec-fetch-mode': 'cors',
        'sec-fetch-site': 'same-origin',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36',
        'x-requested-with': 'XMLHttpRequest',
    }


    params = {
        'sub': 'list',
        'search_field': 'null',
        'begin': f'{5*page}',
        'count': '5',
        'query': '',
        'fakeid': 'MzkyMjY2MjMwOQ==',
        'type': '101_1',
        'free_publish_type': '1',
        'sub_action': 'list_ex',
        'token': '1635832127',
        'lang': 'zh_CN',
        'f': 'json',
        'ajax': '1',
    }
    print(params)
    response = requests.get('https://mp.weixin.qq.com/cgi-bin/appmsgpublish', params=params, cookies=cookies, headers=headers)


    resp = response.json()["publish_page"]
    # print(response.json())
    resp = json.loads(resp)


    print(len(resp['publish_list']))
    for i in resp['publish_list']:
        article_links = []
        art_info = json.loads(i['publish_info'])
        art_title = art_info["appmsgex"][0]["title"]
        art_time = art_info["appmsgex"][0]["create_time"]
        art_date = date = time.strftime('%Y-%m-%d', time.localtime(art_time))
        art_link = art_info["appmsgex"][0]["link"]
        a_info = {
            "url": art_link,
            "title": art_title,
            "time": art_date
        }
        article_links.append(a_info)
    return article_links


article_links= []
for i in range(7): # 7是微信公众号文章页数


    page_link = crawl_all_article_url(i)
    print(page_link)
    article_links = article_links + page_link 
    time.sleep(5)    


 

爬取所有文章并存储为PDF格式

得到文章所有的url之后下一步就是爬取文章的具体内容了,在这里要用到wechatsougo接口,直接pip install 安装会存在依赖库版本问题,主要是库Werkzeug 的版本不对,总是报错,我在这个地方卡了两天,直到试到版本Werkzeug==0.11.15 才成功,需要你做的是:

pip uninstall Werkzeug # wechatsogou 依赖库默认是3.0.3版本,但是会报各种错误
pip3 install Werkzeug==0.11.15 # 安装正确版本
import pdfkit
import wechatsogou




def link_to_pdf(url, title, date):
    ws_api = wechatsogou.WechatSogouAPI(captcha_break_time=3)  # 调用接口
    content_info = ws_api.get_article_content(url)  # 请求链接
    content = content_info['content_html']  # 转换为html格式
    # 将标题和文章内容放入如下html中处理一下
    html = f'''
        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>{title}</title>
        </head>
        <body>
        <h2 style="text-align: center;font-weight: 400;">{title}</h2>
        {content}
        </body>
        </html>'''


    # wkhtmltopdf可执行程序路径
    path_wkthmltopdf = r"D:\software-dir\wkhtmltox\bin\wkhtmltopdf.exe"
    config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)  # 配置pdfkit
    pdfkit.from_string(html, f"{title} {date}.pdf",
                       configuration=config)  # 转PDF,并按设定好的命名文件
    print(f"{title}.pdf 已下载")
  
  
for link in article_links:
    url = link['url']
    title = link['title']
    date = link['time']
    link_to_pdf(url, title, date)

想要获取完整代码和软件的朋友,关注公众号数海丹心,后台回复'pachong'免费获取

相关推荐

配合制导弹药!土耳其推出反无人机武器系统,可全天候拦截无人机

【军武次位面】作者:FriedrichLau据报道,日前土耳其军队装备了一款名为Sahin"沙欣"的反无人机武器系统。该系统由土耳其Aselsan公司开发,旨在摧毁迷你或小型无人机,...

威纶通常见问题18 威纶通触摸屏密码使用的相关介绍

密码1:屏右下角的系统设定列(向左的箭头)进入密码提醒:上传下载的默认密码均为6个1,若不慎忘记密码,因已加密所以原厂也无法解开,请妥善保管密码。若因不可抗力因素造成的忘记密码,只能将屏恢复出厂设置然...

轻松学会威纶通触摸屏上传与反编译

说到上传,大家并不陌生,上传顾名思义:就是把实际触摸屏画面上传到电脑EasyBuilderPro软件上,上传的作用是什么呢?可以修改触摸屏上原有的画面,所以说在上传这两字在工控中是非常重要的,接下来进...

DLL 可以被反编译吗?(dll文件可以编辑吗)

DLL可以被反编译,但存在一定难度DLL(动态链接库)是一种二进制文件,包含了可执行代码和数据。虽然它不像高级语言源代码那样容易被理解,但可以通过一些反编译工具进行逆向分析。不过,反编译后的结果通常...

复古游戏反编译工具遭任天堂下架 工具名或为诱因

Reddit用户mhjhacker1近日发表文章称,自己开发的一款“复古主机游戏逆向工程”工具被其他用户使用,反编译了一款任天堂四十年前的游戏,因而遭到了Itch.io的下架。而相关的另外三个工具也遭...

protobuf之序列化数据和反序列化数据基础知识

什么是protobufProtocalBuffers(简称protobuf)是谷歌的一项技术,用于结构化的数据序列化、反序列化。ProtocolBuffers是一种语言无关、平台无关、可扩展的...

MT管理器-简单实战-去除启动页(mt管理器去除登录界面)

每次打开APP都要看着启动页2秒,很烦人,既然如此我们把它去掉吧。学过Android开发的都知道,APP的每个界面都是一个Activity,然后你点击桌面上的图标之后,其实是启动了这个...

这两个强大的开源C#反编译逆向工具,探索C#桌面应用的小秘密

C#的应用也比较多,有时候,我们想要研究一下别人的优秀的项目,可能会借助一些非常规手段来学习。下面,我就分享几款开源的C#反编译工具。dnSpydnSpy是一个用C#开发,开源的调试器和.NET汇...

一款开源的.NET程序集反编译、编辑和调试神器

致力于发掘、评测和推荐各种高效实用的工具和软件,帮助您在工作和生活中事半功倍。项目介绍dnSpyEx是dnSpy项目的非官方Fork维护版本,一款开源、功能强大的.NET反编译工具和调试器,可用于在没...

记一次噩梦般的经历--论学会反编译的重要性

最近在做一个android项目,因为非开源,github上也没购有私有库,所以就没有提交github管理。昨天我感觉写到了一定程度,一个小的版本已经出来了,于是就想U盘和网盘都备份一下。结果出现了下面...

奇!AI(人工智能)能不能反编译二进制代码为高级语言Java或者C?

一直很好奇某些软件的制作过程,使用的算法。因为自己实现的,写的稀烂,虽然功能达到了,但处理速度和处理效率很低下,于是也尝试使用一些反编译软件,如IDAPro软件。想看看人家怎么实现,怎么做到效果那么...

你知道 Java 中关键字 enum 是一个语法糖吗?反编译枚举类

持续创作,加速成长!这是我参与「掘金日新计划·10月更文挑战」的第7天,点击查看活动详情写下这篇文章,也纯属于是一个机缘巧合,我一个非常要好的朋友程,也是刚刚踏上工作岗位。这个问题也是他踏上岗位...

SpringBoot项目Jar包加密,防止反编译

场景最近项目要求部署到其他公司的服务器上,但是又不想将源码泄露出去。要求对正式环境的启动包进行安全性处理,防止客户直接通过反编译工具将代码反编译出来。方案第一种方案使用代码混淆采用proguard-m...

安卓移动应用代码安全加固系统设计及实现

安卓平台已经逐渐成为最受欢迎的移动终端操作系统,基于安卓系统的软件应用数量众多,同时安全威胁也在不断增加。介绍了Android系统的安全风险及加固的核心技术,据此提出了一种安卓应用程序的安全加固系统,...

代码安全之代码混淆(代码混淆器是干什么的)

防止核心代码泄露以及代码合并每日辛辛苦苦码的代码被轻松破解?机密核心模块被盗用?数据库地址和语句暴露?……这些都是由代码未混淆加密,从而进行泄露的我们目前DLL文件存在的风险:一、直接引用二、反编译...