疫情赋闲在家程序员公开python学习源码,持续更新

143 阅读3分钟

最近疫情原因,我们公司比较“人性化”,在疫情刚刚爆发之后,我就逃离了毒圈,然后在家办公,但是,相对在公司的时候,清闲了太多,又不知道去哪里玩,于是,就在家办个‘补习班‘,教家里的小孩学编程,其中,python爬虫就成为我教他们内容的首选项,今天也开源一个小代码,实现vip音乐的获取

大家可以自己去下载玩一下

至于详细的爬虫实现原理,我在之前的文章中进行过详细的讲解,大家可以看一下:

五步带你探究爬虫爬取视频弹幕背后的真相,附爬虫实现源码

好了,话不多说,上代码:

开发工具:pycharm

开发环境:python3.8.5

#通过一个网站 拿他的数据
#爬虫的核心步骤 => 获取url 接受响应(发送请求) 筛选数据 保存本地
#代码前面写上本次案例需要用到的扩展包(模块)
import requests #python代码模拟浏览器发送网络请求
import json #做json处理

def main():
    #你们想要获取哪个歌手的歌
    geshou = str(input('请输入指定歌手的名称: '))
    # print(geshou)
    #获取多少个页面的歌
    yeshu = int(input('请输入指定页数: '))
    #0-yeshu
    #1-yeshu+1
    for i in range(1,yeshu+1):
        url = "http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?key={}&pn={}&rn=30&httpsStatus=1&reqId=00f6f9b0-572e-11eb-acc3-fbf111a8d0de".format(geshou,i)
        #伪装浏览器
        headers = {
            #键值对的方式   浏览器的类型
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36",
            "Referer": "http://www.kuwo.cn/search/list?key=%E5%91%A8%E6%9D%B0%E4%BC%A6",
            "csrf": "HTJJKH4VAQ",
            "Cookie":"_ga=GA1.2.1345614870.1610439929; Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1610439929,1610687692; _gid=GA1.2.1361641767.1610687692; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1610714039; _gat=1; kw_token=HTJJKH4VAQ"
        }
        #发送请求
        res = requests.get(url,headers=headers)
        # print(res.text)
        html = res.text
        jsons = json.loads(html)
        # print(jsons)
        data = jsons['data']['list']
        # print(data)

        for i in data:
            #音乐名字
            name = i['name']
            # 音乐ID
            rid = i['rid']
            # 后台页面拿到指定歌手歌曲的音乐路径
            url = "http://www.kuwo.cn/url?format=mp3&rid={}&response=url&type=convert_url3&br=128kmp3&from=web&t=1610714066130&httpsStatus=1&reqId=00f83230-572e-11eb-acc3-fbf111a8d0de".format(rid)
            result = requests.get(url, headers=headers).json()
            # print(result.text)
            music_url = result['url']
            # print(music_url)
            #下载
            with open(r'C:\Users\SunComputer\Desktop\VIP音乐/{}.mp3'.format(name),'wb')as f:
                print('正在下载{}'.format(name), end='')
                music = requests.get(music_url)
                f.write(music.content)
                print('\t下载完毕')

main()


刚刚接触python的小伙伴,可以每获取一步数据就打印一次,这样可能对于你的理解有一定的帮助

码云中我已经上传了一些Java相关得学习代码,包括Java基础、微服务框架,多线程实现案例等,大家可以自行下载

Java:源码分享地址

python:源码分享地址