首页 > 解决方案 > 从网页下载 mp3 文件

问题描述

此链接包括一些 mp3 文件,这些文件是巴拉克奥巴马的演讲。我想把这些音频文件下载下来,但是我得把每个mp3文件都点进去一个一个下载,比较繁琐。是否可以使用 Python 做到这一点?

标签: python

解决方案


您可以使用https://pypi.org/project/wget/下载网页或 mp3 等文件

然后解析超链接的 html 内容,检索超链接,然后 wget 该链接。

这可能包括通过检查您发布的网页浏览器上的元素进行的大量解析。

这就是你要找的东西,我使用了 python2.7 和 shell 以便于使用。用于 linux 的 Linux wget 显示“错误 403:禁止”,但 python wget 工作。

>>> # download the webpage
>>> import wget
>>> file = wget.download("https://www.americanrhetoric.com/barackobamaspeeches.htm")
100% [............................................................................] 522790 / 522790>>>
>>> file
u'barackobamaspeeches.htm'
>>>

使用 grep 和 awk 解析下载的文件以从中提取链接。如果您不了解 grep 和 awk,请阅读相关内容。

$ ls
barackobamaspeeches.htm
$ grep "<a href" barackobamaspeeches.htm | grep mp3 | awk -F \" '{print $2}' > mp3_links
$ ls
barackobamaspeeches.htm  mp3_links

现在链接可用,阅读它们并使用 wget 下载。

>>> # Read links from file in a list
>>> fd = open("mp3_links", "r")
>>> links = fd.read().splitlines()
>>> fd.close()
>>>
>>> # Create links for download by prepending base url
>>> base_link = 'https://www.americanrhetoric.com/'
>>> for link in links:
>>>     print(base_link + link)
>>>
>>> # replace print with wget.download(base_link + link)

我已经针对单个链接对其进行了测试,请尝试并相应地调整代码


推荐阅读