7.4一个失败的网易云爬虫,
ps:2018-7-24 21:13:03 失败站起来就很牛逼!!! 网易云歌单下载后面被我做的很强大!而且
迭代了!从面相对象的爬取下载歌单-->多进程下载-->多线程下载!!效率随着每次改进都在提高!!好强大!因为后面也就是
前几天学多线程就优化了一下!把源码放到吾爱破解还给了好多积分!有好多人崇拜!2333333
把基础学完再开始学爬虫
还是把基础做完,有个很好的思路,不要盲目去爬虫! #!/usr/bin/env python #!--*--coding:utf-8 --*-- #!@Time :2018/7/4 17:18 #!@Author TrueNewBee #coding=utf-8 #爬取网易云音乐 #2018-7-4 15:56:14 ''' 2018-7-4 17:47:53 #看视频里面代码就是运行不起来,,卧槽,肯定视频里面有些东西不对! 卧槽,视频看看,不要盲目爬虫,基础得达到才可以!!! 不做了,把视频看完! ''' #搭建界面 from tkinter import * import requests #根据URL下载音乐 #1.获取页面源代码 #2.获取ID #3,下载歌曲 def download_song(): """爬取音乐""" #用户输入的URL url =entry.get() #请求头 header ={ 'Host':'music.163.com', 'Referer':'https://music.163.com/', 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36' } #获取网页源代码 res = requests.get(url,headers=header).text #https://music.163.com/playlist?id=2291115145 print(res) # 创建窗口 root = Tk() #窗口标题 root.title("网易云音乐下载器") #窗口大小 x 小写x root.geometry("550x400") #窗口位置 root.geometry("+500+230") #标签控件 label = Label(root,text="请输入要下载的歌单URL:",) #定位 网格式布局 pack 包 place 位置 label.grid(row= 0,column =0) #输入框 entry = Entry(root ,font = ("微软雅黑",25)) entry.grid(row = 0,column =1) #列表框控件 text = Listbox(root,font =("微软雅黑",15),width = 45,height =10) #columnspan 组件所跨的列数 text.grid(row =1,columnspan = 2) #点击按钮 button = Button(root,text="开始下载",font =("微软雅黑",15),command =download_song()) #sticky = NSWE 上下左右 button.grid(row = 2,column=0,sticky =W) button1 = Button(root,text="退出",font =("微软雅黑",15)) button1.grid(row = 2,column=1,sticky =E) #显示窗口 消息循环 root.mainloop()
#附上源代码 #!/usr/bin/env python#!--*--coding:utf-8 --*-- #![url=home.php?mod=space&uid=238618]@Time[/url] :2018/7/6 12:13 #![url=home.php?mod=space&uid=686208]@AuThor[/url] TrueNewBee #爬取并批量下载网易云歌单歌曲 #根据URL下载音乐 [url=https://music.163.com/#/playlist?id=2269661190]https://music.163.com/#/playlist?id=2269661190[/url] import requests import time from multiprocessing import Pool from bs4 import BeautifulSoup from urllib.request import urlretrieve #1.获取页面源代码 def get_page(): """获取网页源代码(选择自己喜欢的网易云歌单连接)""" # 去掉原链接里面的 #/ url ="https://music.163.com/playlist?id=2269661190" #请求头 headers ={ 'Host':'music.163.com', 'Referer':'https://music.163.com/', 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36' } #获取网页源代码 res = requests.get(url,headers=headers).text #创建对象 解析网页 r = BeautifulSoup(res,"html.parser") #2.获取ID music_dict = {} #找源代码中的a标签 result = r.find("ul",{'class':'f-hide'}).find_all('a') for music in result: music_id = music.get('href').strip("/song?id=")#去掉/song?id music_name = music.text #获取其中的文字 music_dict[music_id] = music_name return music_dict #3.下载歌曲 def download_song(music_dict): """下载音乐""" for song_id in music_dict: song_url = "http://music.163.com/song/media/outer/url?id=%s.mp3"%song_id #网易云音乐的外链 #下载地址(地址填写自己的地址) path="C:\\Users\Administrator\Desktop\网易云音乐\\%s.mp3"%music_dict[song_id]#通过键值对来查找歌曲名字 #下载音乐 urlretriver (地址 路径) time.sleep(1) urlretrieve(song_url,path) print("正在下载%s"%music_dict[song_id]) def main(): music_dict =get_page() download_song(music_dict) if __name__ == '__main__': main()