用python实现下载百度mp3

本文介绍如何使用Python编写爬虫程序从百度搜索并下载MP3文件。文章详细讲解了利用urllib和re模块抓取网页内容的过程,以及如何通过正则表达式解析和获取音乐下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学了一个星期的python,闲来无聊,想写一个在百度搜索mp3并下载的脚本.

需要用到的python模块:
re, urllib或者urllib2
相关函数:
urllib:
urllib.retrieve( url, savefile)
urllib2:
re = urllib.Request(url)
res = urllib2.urlopen(re)
data = re.read()

首先,需要连接到百度的结果页
通过分析结果页的地址栏可以发现,我们输入的关键字在一个word之后显示。
不过因为URL中只能显示英文(准确地说应该是ASCII码值),所以如果我们的关键字是中文的话,
需要做一点修改。其实就是将中文字符串逐个(一个汉字等于两个字符的长度)解析,并将其扩展
的ASCII码值转换成十六进制即可。但是通过分析URL格式,我们需要在每个ASCII码值之前加上%

例如:
输入如: blue night
网址应该为:http://mp3.baidu.com/m?f=ms&rn=&tn=baidump3&ct=134217728&word=blue+night&lm=0
输入: 不是因为寂寞才想你
网址则为:http://mp3.baidu.com/m?f=ms&tn=baidump3&ct=134217728&lf=&rn=&word=%B2%BB%CA%C7%D2%F2%CE%AA%BC%C5%C4%AF%B2%C5%CF%EB%C4%E3&lm=0
其中那段word=***就是转换之后的结果,至此,搜索的结果页已经得到。
只要用前面函数就可读取页面的内容。

接着,就是提取想要的结果的下载链接页面了。
这部比较简单,用正则表达式搜索一下就行了。
我就只提取了第一个搜索的结果。
正则表达式为: (http:.*baidusg,)(.*)(&word=mp3.*sgid=1)
其中 sgid=N, 这个N就是控制第几个结果的参数
附:为了防止下一步的失效,这里有点需要注意的,就是在这里的时候就应该把结果的中文一并提取出来并转换乘对应的格式再换回去,因为URL里面不可以有中文,否则下步的函数会出现异常。

接下来,是最关键的一步——在下载页面里找正真的下载链接了。
通过看网页代码发现网址居然是加密的,因为上学期学过点点密码学,所以一开始就想着自己去破解它。可是后来在仔细分析它的代码之后居然发现里面的脚本就是解密算法(要不然浏览器怎么显示给我们看呢?)。汗!前面白忙活了……
这样就简单多了,只要将解密函数改写成python就行了。至此,离大功告成就只有一步了。

最后一步:万事俱备,东风一来。那就只有下载咯……

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值