zoukankan      html  css  js  c++  java
  • 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:\UsersAdministratorDesktop网易云音乐\%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()
  • 相关阅读:
    YARN的设计
    在(MRv1)中JobTracker工作方式
    经典 MapReduce框架(MRv1)
    进程与线程的简单解释
    Java序列化的机制和原理
    ibatis源码学习4_参数和结果的映射原理
    ibatis源码学习3_源码包结构
    ibatis源码学习2_初始化和配置文件解析
    ibatis源码学习1_整体设计和核心流程
    spring中的设计模式
  • 原文地址:https://www.cnblogs.com/zhen1996/p/9264499.html
Copyright © 2011-2022 走看看