前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一键批量下载微信公众号文章内容/图片/封面/视频/音频,支持导出html和pdf格式,包含阅读数/点赞数/在看数

一键批量下载微信公众号文章内容/图片/封面/视频/音频,支持导出html和pdf格式,包含阅读数/点赞数/在看数

作者头像
苏生不惑
发布2021-12-28 14:30:44
3.5K1
发布2021-12-28 14:30:44
举报
文章被收录于专栏:苏生不惑苏生不惑

之前分享过听说公众号深圳卫健委被网友投诉尺度大,我抓取了所有文章标题和阅读数分析了下 ,后来发现这个号的封面图真有意思,于是批量下载了所有封面图,如果有需要在公众号后台对话框回复 封面 获取所有封面图的网盘地址。

所有封面图的文件名为文章发布日期加标题,方便搜索。

于是顺便再研究了下批量下载公众号文章内容,图片,视频和音频,文章内容支持导出HTML,pdf格式,以我的公众号为例,共300多篇原创文章,很快就下载完了,下载详情见之前文章一键下载公众号所有文章,导出文件支持PDF,HTML,Markdown,Excel,chm等格式 ,如果你有需要抓取下载的公众号在后台微信联系我。

生成的所有历史文章列表pdf文件,包括文章发布时间,文章作者,文章简介和文章链接,需要找哪篇文章ctrl+f搜索后打开就行,比在微信里搜索方便多了。

还有markdown格式文件。

以及excel数据文件(这里用的是公众号深圳卫健委的数据),包括发布日期,文章标题,文章链接,文章简介,文章作者,阅读数,在看数和点赞数,按文章阅读数排序可以很方便的知道哪些文章受欢迎。

下载的html文件可以用谷歌浏览器打开,即使文章被删了在本地也能继续看。

再用python脚本将html批量转为pdf文件。

代码语言:javascript
复制
def export_pdf():
    import pdfkit,os
    print('导出 PDF...')
    htmls = []
    for root, dirs, files in os.walk('.'):
     for name in files:
      if name.endswith(".html"):
       print(name)
       try:
         pdfkit.from_file(name, 'pdf/'+name.replace('.html', '')+'.pdf')
       except Exception as e:
             print(e)
export_pdf()

转换后的pdf文件比html文件大。

因为我的文章不发音频,这里以默默道来这个号为例,单篇文章隧道里的光 的音频可以用idm直接下载。

音频链接文件格式为https://res.wx.qq.com/voice/getvoice?mediaid=xxx ,于是用正则匹配就能批量下载音频了。

代码语言:javascript
复制
def audio(res,headers,date,title):
    aids = re.findall(r'"voice_id":"(.*?)"',res.text)
    time.sleep(2)
    tmp = 0
    for id in aids:
        tmp +=1
        url = f'https://res.wx.qq.com/voice/getvoice?mediaid={id}'
        audio_data = requests.get(url,headers=headers)
        print('正在下载音频:'+title+'.mp3')
        with open(date+'___'+title+'___'+str(tmp)+'.mp3','wb') as f:
            f.write(audio_data.content)

批量下载音频效果:

下载的音频文件名为文章发布时间+文章标题.mp3,也是方便搜索。

同样我的公众号也不发视频,这里以阿斗归来了这个号为例,单篇文章神雕侠侣,绝迹江湖!金庸经典武侠《神雕侠侣》大结局 的视频也可以用idm下载。

视频链接也是有规律的,同样通过正则匹配来批量下载视频:

代码语言:javascript
复制
def video(res, headers):
    vid = re.search(r'wxv_.{19}',res.text).group(0)
    time.sleep(2)
    if vid:
        url = f'https://mp.weixin.qq.com/mp/videoplayer?action=get_mp_video_play_url&preview=0&vid={vid}'
        data = requests.get(url,headers=headers).json()
        video_url = data['url_info'][0]['url']
        video_data = requests.get(video_url,headers=headers)
        print('正在下载视频:'+trimName(data['title'])+'.mp4')
        with open(trimName(data['title'])+'.mp4','wb') as f:
            f.write(video_data.content)

批量下载视频效果:

下载的视频如图:

如果文章里用的是视频号里的视频,这个只能抓包单个下载,目前还没研究出如何批量下载视频号,这里以前几天西城男孩视频号的视频为例,抓包就能获取视频下载地址。

最后说下批量下载文章里的图片,也是正则匹配图片链接批量下载:

代码语言:javascript
复制
def imgs(content,headers,date,position,title):
    imgs=re.findall('data-src="(.*?)"',content)
    time.sleep(2)
    num = 0
    for i in imgs:
        num+=1
        img_data = requests.get(i,headers=headers)
        print('正在下载图片:'+i)
        with open(date+'___'+title+'___'+str(position)+'___'+str(num)+'.jpg','wb') as f:
            f.write(img_data.content)

批量下载图片效果:

下载的图片文件名为文章发布时间加文章标题和数字:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 苏生不惑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档