Python实训day08am【网络爬虫selenium、图像处理入门】

Python实训-15天-博客汇总表

网络爬虫-selenium

练习1-下载歌曲

课后作业:根据今日所学,在网易云上,找到一名自己喜欢的歌手,将该歌手的歌曲或歌词下载到本地。

例如,毛不易:https://music.163.com/#/artist?id=12138269

 

 

'''
课后作业:根据今日所学,在网易云上,找到一名自己喜欢的歌手,将该歌手的歌曲或歌词下载到本地。
例如,毛不易:https://music.163.com/#/artist?id=12138269
'''
import requests as req
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

hds = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}

def wydown(songname, songid):
    common_url = 'http://music.163.com/song/media/outer/url?id={}';
    resp = req.get(common_url.format(songid), headers=hds);
    ct = resp.content;
    print(len(ct))
    print(resp.status_code);  # 200正常;302重定向,需要继续获取重定向后的路径
    if resp.status_code == 200:
        f = open(r'C:\Users\lwx\Desktop\网易云\毛不易\{}.mp3'.format(songname), 'wb')
        f.write(ct);
        f.close();
        print('已下载:', songname);

# 无头模式:隐身的启动浏览器,但是并没有窗口展现。
opts = Options()
opts.add_argument('--headless')
opts.add_argument('--disable-gpu')

bw = webdriver.Chrome(options=opts);

url = 'https://music.163.com/#/artist?id=12138269'
bw.get(url);
bw.switch_to.frame('g_iframe');

ss = bw.find_elements_by_css_selector('.m-table .txt a b');
ids = bw.find_elements_by_css_selector('.m-table .txt a');

songinfo = {};  # 歌曲名:歌曲id
for i, s in enumerate(ss):
    songinfo[s.get_attribute('title')] = ids[i].get_attribute('href').split("=")[1];

bw.close();

print(songinfo);

# 遍历字典,下载所有歌曲
for k, v in songinfo.items():
    wydown(k, v);

练习2-下载歌词

歌词路径:https://music.163.com/#/song?id=569213220

 

 

 

 

'''
下载歌词:https://music.163.com/#/song?id=569213220
毛不易《像我这样的人》
'''
import requests as req
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time;

hds = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}

# 无头模式:隐身的启动浏览器,但是并没有窗口展现。
opts = Options()
opts.add_argument('--headless')
opts.add_argument('--disable-gpu')

bw = webdriver.Chrome(options=opts);

url = 'https://music.163.com/#/song?id=569213220'  # 歌词路径
bw.get(url);
bw.switch_to.frame('g_iframe');

# bw.implicitly_wait(10) #设置等待,最多等10秒,如果有元素会立即返回
time.sleep(2);  # 等一下,等元素加载出来

more = bw.find_elements_by_css_selector('#flag_ctrl .u-icn')[0];
more.click();

ly = bw.find_elements_by_css_selector('#lyric-content')[0];

ct = ly.text;

print(ct)

# 将ct的内容下载到.txt中
# 1.打开文件(默认是gbk编码)
f1 = open(r'C:\Users\lwx\Desktop\歌词.txt', 'a', encoding="utf-8");  # w就表示write
# 2.写文件
f1.write(ct)
# 3.关闭文件
f1.close();
posted @ 2022-01-14 17:28  lu16  阅读(139)  评论(0)    收藏  举报