[python]下载小伴龙网站的儿歌
本帖最后由 reinhand 于 2018-9-27 15:29 编辑今天给儿子下载一些儿歌等到MP3,发现一个不错的网站http://www.youban.com/mp3/
资源还是挺多的嘛~~点开唐诗三百首进去看看
还挺多的,点开一个进去,可以看得到进去是简介,再点击立面的下载才到下载页面。。。一个一个下载太费事。。
仔细观察了一下,网站全是静态网页,以《春晓》为例,简介网址为http://www.youban.com/mp3-4300.html,下载网址为http://www.youban.com/mp3-d4300.html,只差一个d(管理员真懒。。)
再来看一下下载页面的源代码,可以看到下载的真实地址就在源代码呢。。。再往上也有这个音频的名称,我们要的信息都有了,<a href="/mp3/">音频</a>><a href="/mp3-4300.html">春晓</a>这是存放名称的标签,有个href属性,记下
现在的问题时要批量下载,回到唐诗三百首专辑的页面查看原代码,,我们要的地址出来了。。都在<a>标签里面,其中第二个<a>标签有个属性class="mp3PlayIco",而且
其他所有的子项网址都在。。好了,掏出利器开始收集网址吧,requests和beautifulsoup4模块
import requests
from bs4 import BeautifulSoup
r = requests.get('http://www.youban.com/mp3-t4416.html')
soup = BeautifulSoup(r.text,'lxml')
a=soup.find_all('a',class_='mp3PlayIco')
urls=[]
nn=[]
for i in a:
u = i['href'].split('/')
urls.append(base+u.replace('mp3-','mp3-d'))
nn.append('/'+u)
#这里的nn存放的就是上面说到的存放名称标签的href属性的值
好了,url拿到了,开始下载,这里采用的单线程下载
for i in range(len(a)):
try:
url1 = urls
c = requests.get(url1)
soup = BeautifulSoup(c.text,'lxml')
durl = soup.find_all('a',text=u'本地网通')['href']
savename = soup.find_all('a',href=nn).text+'.mp3'
r = requests.get(durl)
with open(savename, "wb") as code:
code.write(r.content)
print 'Done'
except:
print url1
好啦,至此唐诗三百首专辑的所有MP3就下载完成啦~~ w241357 发表于 2018-11-11 09:34
怎么批量采集下载它啊
代码都有,只不过是单合集,单线程下载~想全部采集全部,把合集名字做个列表传入下载就行,嫌慢就用多线程~~不过这些文件都不大,单合集的话单线程完全嗯呢该胜任 reinhand 发表于 2018-11-11 10:27
代码都有,只不过是单合集,单线程下载~想全部采集全部,把合集名字做个列表传入下载就行,嫌慢就用多线 ...
大佬,有码吗?我不会写啊.... 能做这个的防站吗 请整理下排版! 回家好生研究一下lz的代码 我的入门的道路上渐行渐远了 路过,顶一个 楼主有下载好的合集吗 学习一下 唯殇啊 发表于 2018-9-20 21:40
楼主有下载好的合集吗
木有。。。太多啦,只下载了一部分。。 wushaominkk 发表于 2018-9-17 16:57
请整理下排版!
好的~~回头重新排版下 真宗王老吉凉茶 发表于 2018-9-17 16:57
能做这个的防站吗
这个真的不是很了解,可以采用动态js或者限制ip,不过这样只是让爬虫代码稍微复杂点而已、、
页:
[1]
2