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

上一篇博客教大家下载了公众号中的音频文件,这次利用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中,未来有机会再研究更加深度的爬虫。

代码如下:

抱歉,只有登录并在本文发表评论才能阅读隐藏内容

点赞
  1. 1111说道:
    Google Chrome Windows 10

    :han: 学习下

    1. mushin说道:
      Google Chrome Mac OS X 10.14.6

      怎么注册啊

    2. duan说道:
      Google Chrome Windows 10

      来了

  2. eduto说道:
    Google Chrome Windows 7

    下载学习 一下,谢谢博主!

    1. Regan442说道:
      Google Chrome Windows 10

      这个要怎么注册呀

  3. 1说道:
    Google Chrome Windows 7

    :han: 学习下

  4. 1说道:
    Google Chrome Windows 7

    :han: 学习下:han: 学习下:han: 学习下:han: 学习下

  5. 做最好的自己说道:
    Google Chrome Windows 7

    学习~~

  6. 123456说道:
    Google Chrome Windows 7

    可以的

  7. learn说道:
    Google Chrome Windows 10

    学习下

  8. student说道:
    Google Chrome Windows 10

    学习

  9. stu说道:
    Firefox Windows 10

    学习

  10. xx说道:
    Google Chrome Mac OS X 10.15.0

    学习了

  11. allenwalker说道:
    Google Chrome Windows 8.1

    学习了

  12. allenwalker说道:
    Google Chrome Windows 8.1

    学习学习

  13. allenwalker说道:
    Google Chrome Windows 8.1

    您好,请问如何才能看到您的这个简易爬虫代码?想学习学习

    1. eumenides说道:
      Google Chrome Windows 10

      您好,最近几天比较忙,没有能及时的将您的评论通过,不好意思,敬请谅解

  14. 好奇的 01说道:
    Firefox Windows 7

    正需要呢,谢谢博主。

  15. akax说道:
    Google Chrome Windows 8.1

    学习一下

  16. 苏牧说道:
    Google Chrome Windows 10

    希望能够学习一下

  17. yansu说道:
    Google Chrome Windows 10

    学习1下

  18. Aaron说道:
    Google Chrome Windows 10

    学习一下看下代码

  19. zhanzhao说道:
    Google Chrome Windows 10

    下载,学习下

  20. zhanzhao说道:
    Google Chrome Windows 10

    。。。

  21. xzcxczxc说道:
    Google Chrome Windows 10

    谢谢分享,学习一下

  22. XX说道:
    Google Chrome Windows 8.1

    谢谢分享!

  23. caxch说道:
    Firefox Windows 10

    学习。下

  24. zzz说道:
    Google Chrome Windows 10

    学习下,最近在用

  25. derrick说道:
    Google Chrome Windows 10

    学习下嘿嘿

  26. derrick说道:
    Google Chrome Windows 10

    学习下

  27. northawn说道:

    下载学习 一下,谢谢博主!

  28. lmswxy说道:
    Internet Explorer Windows 10

    :hehe: 正好需要, 借鉴一下, 博主杠杠滴

  29. phi说道:
    Google Chrome Android 10

    下载学习 一下,谢谢博主!

  30. 灰灰说道:
    WebView Android 9

    非常感谢

  31. xialinren说道:
    Google Chrome Windows 10

    学习下!

  32. hello说道:
    Google Chrome Windows 7

    谢谢,学习一下

  33. 剃度晨欢说道:
    Google Chrome Windows 10

    怎么注册

  34. chy说道:
    Google Chrome Windows 10

    学习学习

  35. 111说道:
    Google Chrome Windows 10

    谢谢,学习一下

  36. 芥末灬说道:
    WebView Android 10

    这个要好好学习下

  37. 芥末灬说道:
    WebView Android 10

    为什么不能显示源代码呢博主?需要啊大神…求帮助

  38. 芥末灬说道:
    Google Chrome Windows 10

    终于注册上了,手机不显示注册信息。。。赶快下载下来看看

  39. qizhi说道:
    Google Chrome Windows 10

    迫切需要,谢谢博主

  40. zm18885说道:
    Google Chrome Windows 10

    学习

  41. zidingyi说道:
    Google Chrome Windows 10

    学习

  42. 风潇潇说道:
    Google Chrome Windows 10

    学习一下

  43. chenyusu说道:
    Safari Mac OS X 10.15.6

    学习了

  44. mushin说道:
    Google Chrome Mac OS X 10.14.6

    怎么下载啊 想学习一下

  45. Alan·说道:
    Google Chrome Windows 10

    学习

  46. 大千之龙说道:
    Google Chrome Windows 10

    感谢博主

  47. 可达鸭架说道:
    Google Chrome Windows 10

    支持

  48. d.y说道:
    Google Chrome Mac OS X 10.15.7

    学习学习

  49. 51crack说道:
    Google Chrome Mac OS X 10.15.7

    学习学习

  50. 123说道:
    Google Chrome Windows 10

    学习一下 PGone 牛逼

  51. 萧家墨颖说道:
    Google Chrome Windows 7

    学习学习

  52. AngobertWolf说道:
    Firefox Windows 7

    学习学习

  53. SiNoAlPs说道:
    Google Chrome Windows 10

    非常不错,支持一下

    1. annan1234说道:
      Safari Mac OS X 10.15.4

      回复了怎么下载呢

  54. annan1234说道:
    Safari Mac OS X 10.15.4

    想学习下载公众号音频

  55. 漫迷说道:
    Google Chrome Windows 10

    学习

  56. 世纪隆说道:
    Google Chrome Windows 10

    学习。

  57. 世纪隆说道:
    Google Chrome Windows 10

    还需要评论啊。

  58. qq说道:
    Google Chrome Windows 10

    文件还在不在了?

  59. qq说道:
    Google Chrome Windows 10

    看不到文件?

发表评论

电子邮件地址不会被公开。必填项已用 * 标注

[2;3Rer>