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()

 

posted @ 2018-07-04 17:49  我想喝杨枝甘露~  阅读(515)  评论(0编辑  收藏  举报