欢迎大家光临我的博客,大家一起交流学习哦

陈京九的博客

首先声明我只是一个小菜鸡,把自己琢磨一些功能的过程发到了这里当做记录,希望大神们轻喷,能给我一些指导就更好啦~

上一篇博客教大家下载了公众号中的音频文件,这次利用python脚本进行批量下载。

首先还是跟上一次操作差不多,先把微信设置好,然后点击链接,进入浏览器中

这次我们要爬取的就是这些文章中的音频。

首先我们要知道如何下载当前页面的音频,还是F12,然后点击network,Media,点击播放按钮,弹出下面的文件

双击文件,弹出新的页面,此时的页面链接就是该音频的真实地址,可以通过访问该网址得到音频文件。

为了了解该文件是如何传输的,我们用burpsuite抓包看看

这个就是请求报文的头部,Go

返回的响应包体中包含大量的乱码,其实这个就是音频文件本身。我们的音频文件传输都是以这种方式传输的,看看Hex形式的样子

我们把这些字符保存下来会怎么样呢?

点击Headers,在下方点击右键,选择copy to file

保存为1.mp3,这时保存的路径就出现一个名为1.mp3的文件,点击运行,果然可以播放。

其实说了这么多就是为了告诉大家,音乐文件的存储不外乎这些字符,我们只需要把得到的报文中的字符保存成文件,就相当于保存了音乐本身。

知道了这个知识,我们就可以进行下一步操作,就是利用python模拟访问网页。

1.获取歌曲的真实下载地址

这个是获得音乐真实下载地址的代码,headers中的User-Agent和Cookie是必不可少的。因为微信中的网页对用户浏览器做了严格的限制,打开微信公众号的文章时,都会首先校验是否是微信浏览器打开,如果不是,会弹出请用微信浏览器打开的网页。而为什么我们现在能通过电脑浏览器访问微信公众号的页面呢?就是因为我们从微信中点开该链接时,系统自动帮我们加上了微信浏览器的UA。

利用requests库访问目标url,从返回的内容中找到'voice_encode_fileid="(.*?)"'字符串,然后返回给url。

上面这个操作有两个需要注意的:

1.前面的url和后面返回的url不是一个url,前面的url是我们最开始点击的链接,也就是公众号文章的链接。而后一个链接是从公众号文章中获取到的歌曲真实下载地址链接。

2.为什么找'voice_encode_fileid="(.*?)"'这个字符串呢?

因为我们要获取到歌曲真实的下载地址,如何在页面中找到这个地址呢?

首先检查元素,找到歌曲的编号

我们检查网页源代码,搜索歌曲的编号

看到该歌曲的编号前面字符串就是'voice_encode_fileid=',然后中间的(.*?)这个是python的re模块贪婪匹配的符号,我们需要将这个代替我们想要获取的字符串。最后我返回了一个url和一个名字,主要是为了下载歌曲时命名所用。

通过上面的操作我们获得了歌曲的真实下载地址,接下来就是下载歌曲

2.下载歌曲

下载歌曲的代码其实就相当简单明了,通过字符串拼接出真实下载地址,然后get,将获得的响应报文中的包体写入到文件中,文件的名字就是上一步获取到的名字。

这里主要涉及到的就是歌曲的保存问题,有了前面的知识,相信理解起来也就不是太难了。

3.获取其他歌曲的链接

上面的代码就是获取其他歌曲的链接,也是通过检查页面源代码,然后找到网页中其他歌曲的链接并保存下来。

这个函数中有一个url_queue,这个是python中的队列,主要是避免多线程操作时出现未知的内存错误。

获得了链接后,该函数会将url放入到url_queue队列中,等待get_url函数读取到其真实的歌曲下载地址。

4.主函数,模块的组合

程序首先定义一个队列,用来存放歌曲链接,然后定义了一个url_list,存放初始的公众号文章链接,通过这些链接获取到更多的链接。然后定义一个循环,对url_list中的url进行爬取,获得更多的歌曲链接。最后定义了一个循环,获取到歌曲的真实下载链接和名字,然后通过get_music()函数将歌曲保存到本地。

点击运行

可以看到程序先读取了url_list

然后保存相关的歌曲,并将歌曲命名为该编号的最后3个字符

最后获取到了39个歌曲,这个爬虫只是一个粗略的版本,并没有对很多情况进行处理,这个只能算一个爬取一轮的爬虫,并没写递归或循环进行更加深度或广度的爬取。需要爬取别的页面可以将页面的url放入到main函数的url_list中,未来有机会再研究更加深度的爬虫。

这个爬虫的代码放到了我的个人博客中,需要的朋友可以访问下载

利用Python编写脚本批量下载公众号中的音频相关推荐

  1. python爬微信公众号视频_python爬虫公众号所有信息,并批量下载公众号视频

    之前写过一篇类似的文章:python爬取公众号,用最简单的方式爬虫 还有同学一直在问,可能中间有一些小细节不明确,这次彻底明确一下细节. 本篇添加一个批量下载公众号内视频的功能,可以实现完全复制一个公 ...

  2. python爬取某信公众号所有信息,并批量下载公众号视频

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:Python疯子 本篇添加一个批量下载公众号内视频的功 ...

  3. python爬虫公众号所有信息,并批量下载公众号视频

    之前写过一篇类似的文章:python爬取公众号,用最简单的方式爬虫 还有同学一直在问,可能中间有一些小细节不明确,这次彻底明确一下细节. 本篇添加一个批量下载公众号内视频的功能,可以实现完全复制一个公 ...

  4. python批量下载公众号历史文章(一)

    [新地址] Rabbit & Bear[半自动版]python批量下载公众号历史文章(一) | Rabbit & Bear (unclevicky.github.io) [背景] 原博 ...

  5. 使用splinter+requests批量下载微信公众号中的音频文件

    需求分析 晚上老妈微信上给发了个豫剧公众号的链接,要我帮她下载到U盘上 打开看了下,页面还比较规矩,可以直接用CSS选择器晒出来列表链接地址,再进行遍历获取. 这里遇到一个小坑:公众号中内嵌音频文件不 ...

  6. python 公众号付费视频地址_python批量下载公众号内的视频

    我们选择自建图文 选择目标公众号 打开开发者工具 选择network,并重新搜索 获取到请求的url 打开url 我们需要重点关注画红框的部分,在我们之后的会使用到 我们根据上面的请求url变换beg ...

  7. 利用Python编写网络爬虫下载文章

    今天来讲如何利用Python爬虫下载文章,拿韩寒的博客为例来一步一步进行详细探讨... 韩寒的博客地址是:http://blog.sina.com.cn/s/articlelist_119125812 ...

  8. 爬虫案例:利用python爬虫关键词批量下载高清大图

    环境: python3+pycharm+requests+re+BeatifulSoup+json 这个确实也属实有一些勉强,不少童鞋私信问我有木有 下载大图 的源码,我说可能会有,现在分享给大家. ...

  9. 利用python爬虫关键词批量下载高清大图!

    前言 在上一篇 写文章没高质量配图?python爬虫绕过限制一键搜索下载图虫创意图片 !中,我们在未登录的情况下实现了图虫创意 无水印高清小图 的批量下载.虽然小图能够在一些移动端可能展示的还行,但是 ...

最新文章

  1. 百度二面:一个线程OOM了,其它线程还能运行吗?
  2. NeurIPS 2019揭榜!华人作者贡献42%,谷歌170篇屠榜;国内清华第一,腾讯领衔产业界(附链接)...
  3. ML之ECS:利用ECS的PAI进行傻瓜式操作机器学习的算法
  4. qt自定义窗口,其绘制的窗口边框线显示不全
  5. 这几款 JVM 故障诊断处理工具,你还不会?
  6. Eclipse启动Web项目 Tomcat中webapps中没有项目文件夹
  7. Python调用QQ截图工具
  8. aspen稳态导出动态_Aspen Dynamics在控制中的应用
  9. java从键盘输入若干学生的成绩_初学Java3:数组-从键盘录入若干学生的成绩,计算平均值,最大值,最小值...
  10. 应届毕业生年薪50W,你敢相信吗?
  11. luci网页shell_LUCI 使用其原有机制的建立新的页面
  12. upc51-种树 实现:树形dp+换跟+剪枝
  13. Linux指令和对应的英文全称,Linux单横杠和双横杠的区别
  14. SAP BADI增强点初学分享
  15. Java学习之编程入门
  16. 北师大的计算机科学专业排名,2021北京师范大学王牌优势专业排名 什么专业最好...
  17. APM系统监控技术选型
  18. html5按钮篮筐怎么去,高手中锋的问题
  19. JAVA毕业设计幼儿早教系统软件设计与实现计算机源码+lw文档+系统+调试部署+数据库
  20. Silk.Net Opengl 创建基于WPF或者Winform 的显示控件

热门文章

  1. PolyLaneNet:基于深度多项式回归的车道估计(PolyLaneNet: Lane Estimation via Deep Polynomial Regression)
  2. vlan间路由的实现(思科模拟器)
  3. NestJs简明教程
  4. 双系统安装deepin20_win10+deepin双系统安装方法(UEFI+GPT)
  5. win7虚拟机VCMI无法自动安装驱动程序
  6. Android模拟器黑屏
  7. WinSCP下载安装及使用
  8. 晨星、银河基金业绩排行榜数据转换工具
  9. 考研由考生编号估计学校,报考人数和专业
  10. Thinkpad E450c WIN8 重装系统 如何U盘启动