Python实训day07pm【Selenium操作网页、爬取数据-下载歌曲】
练习1-爬取歌曲列表
任务:通过两个案例,练习使用Selenium操作网页、爬取数据。
使用无头模式,爬取网易云的内容。
'''
任务:通过两个案例,练习使用Selenium操作网页、爬取数据。
使用无头模式,爬取网易云的内容。
'''
from selenium import webdriver
# 无头模式:隐身地启动浏览器,但是并没有窗口展现
from selenium.webdriver.chrome.options import Options
opts = Options()
opts.add_argument('--headless')
opts.add_argument('--disable-gpu')
bw = webdriver.Chrome(options=opts);
# bw = webdriver.Chrome();
url = 'https://music.163.com/#/discover/toplist?id=3779629'
bw.get(url);
bw.switch_to.frame('g_iframe')
# 如果页面中有iframe,说明有内嵌页面
# 要爬取元素时,先切换到对应的内嵌页面中,然后再爬
ss = bw.find_elements_by_css_selector('.m-table-rank tbody tr .txt a b');
print(len(ss)) # 100
authors = bw.find_elements_by_css_selector('.m-table-rank tbody tr .text');
print(len(authors)) # 100
for i, s in enumerate(ss):
print(s.get_attribute('title'), ':', authors[i].get_attribute('title'));
bw.close();
练习2-爬取歌曲文件mp3
网易云:能不能爬取音乐???可以!能不能爬歌词???可以!
网易云音乐,歌曲通用下载地址:http://music.163.com/song/media/outer/url?id= [ id后面拼接歌曲编号 ]
![]()
'''
尝试下载,requests访问,得到二进制数据,保存到本地即可
爬取网易云音乐的歌曲mp3文件(单个歌曲下载)
《初恋》歌曲id: 1873049720
《清醒》歌曲id:1909660296
《星辰大海》歌曲id:1811921555
'''
import requests as req
# hds:伪装成浏览器
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'}
common_url = 'http://music.163.com/song/media/outer/url?id={}'; # 通用下载路径
resp = req.get(common_url.format('1909660296'), headers=hds);
ct = resp.content; # 响应内容
print(len(ct)) # 响应内容长度
print(resp.status_code); # 200正常;302重定向,需要继续获取重定向后的路径
# print(resp.headers)
# u2 = resp.headers['Location'];
# print(u2) # 继续爬取u2路径,来下载音乐
if resp.status_code == 200:
with open(r'C:\Users\lwx\Desktop\网易云\清醒.mp3', 'wb') as f: # as f取别名,简写
f.write(ct);
# 上述两行代码(简写),在效果上等于下面三行代码。
# f = open(r'C:\Users\lwx\Desktop\网易云\清醒.mp3', 'wb')
# f.write(ct)
# f.close()
print('over!')
练习3-下载飙升榜中的歌曲
结合上午的代码和刚才下载音乐的办法,请尝试:将飙升榜中的前20首歌曲下载(尝试下载)。
https://music.163.com/#/discover/toplist 15分钟时间
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\qx\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/#/discover/toplist'
bw.get(url);
bw.switch_to.frame('g_iframe');
ss = bw.find_elements_by_css_selector('.m-table-rank tbody tr .txt a b');
ids = bw.find_elements_by_css_selector('.m-table-rank tbody tr .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);
Python实训day07pm【Selenium操作网页、爬取数据-下载歌曲】的更多相关文章
- Python-异常处理 使用selenium库自动爬取数据
异常处理 处理程序的报错 语法 捕捉万能异常: try: print(a) except Exception as e: print("你的代码有问题") print(" ...
- [Python爬虫] 之三:Selenium 调用IEDriverServer 抓取数据
接着上一遍,在用Selenium+phantomjs 抓取数据过程中发现,有时候抓取不到,所以又测试了用Selenium+浏览器驱动的方式:具体代码如下: #coding=utf-8import os ...
- Python爬虫学习——使用selenium和phantomjs爬取js动态加载的网页
1.安装selenium pip install selenium Collecting selenium Downloading selenium-3.4.1-py2.py3-none-any.wh ...
- python 网页爬取数据生成文字云图
1. 需要的三个包: from wordcloud import WordCloud #词云库 import matplotlib.pyplot as plt #数学绘图库 import jieba; ...
- 动态网页爬取例子(WebCollector+selenium+phantomjs)
目标:动态网页爬取 说明:这里的动态网页指几种可能:1)需要用户交互,如常见的登录操作:2)网页通过JS / AJAX动态生成,如一个html里有<div id="test" ...
- Python使用urllib,urllib3,requests库+beautifulsoup爬取网页
Python使用urllib/urllib3/requests库+beautifulsoup爬取网页 urllib urllib3 requests 笔者在爬取时遇到的问题 1.结果不全 2.'抓取失 ...
- Python和BeautifulSoup进行网页爬取
在大数据.人工智能时代,我们通常需要从网站中收集我们所需的数据,网络信息的爬取技术已经成为多个行业所需的技能之一.而Python则是目前数据科学项目中最常用的编程语言之一.使用Python与Beaut ...
- [Python爬虫] 使用 Beautiful Soup 4 快速爬取所需的网页信息
[Python爬虫] 使用 Beautiful Soup 4 快速爬取所需的网页信息 2018-07-21 23:53:02 larger5 阅读数 4123更多 分类专栏: 网络爬虫 版权声明: ...
- 利用selenium和ffmpeg爬取m3u8 ts视频《进击的巨人》
需求 想看下动漫<进击的巨人>,发现到处被和谐,找不到资源,但是在一个视频网站找到了在线播放,https://www.55cc.cc/dongman/17890/player-2-1.ht ...
随机推荐
- [BUUCTF]REVERSE——[GKCTF2020]Check_1n
[GKCTF2020]Check_1n 附件 步骤: 例行查壳儿,32位程序,无壳儿 32位ida载入,习惯性的检索程序里的字符串,看到了一个比较有意思的字符串,但是不懂是什么解密,先不管它了 在这些 ...
- 『忘了再学』Shell基础 — 2、Shell的作用与分类
目录 1.Shell的作用 2.Shell的分类 1.Shell的作用 Shell除了能解释用户输入的命令,将它传递给内核,还可以: 调用其他程序,给其他程序传递数据或参数,并获取程序的处理结果. 在 ...
- CF127A Wasted Time 题解
Content 平面上有 \(A_1(x_1,y_1),A_2(x_2,y_2),...,A_n(x_n,y_n)\) 共计 \(n\) 个点.你需要依次将 \(A_1\) 连接至 \(A_2\),\ ...
- WebSocket协议理解-数据包格式解析
WebSocket 的诞生 做客户端开发时,接触最多的应用层网络协议,就是 HTTP 协议,而今天介绍的 WebSocket,下层和 HTTP 一样也是基于 TCP 协议,这是一种轻量级网络通信协议, ...
- 大型网站高可用架构之CAP原理
在讨论高可用数据服务架构之前,必须先讨论的一个话题是,为了保证数据的高可用,网站通常会牺牲另一个也很重要的指标:数据一致性. CAP原理认为,一个提供数据服务的存储系统无法同时满足数据一致性.数据可用 ...
- 教学日志:javaSE-面向对象1
对象,类,属性,方法的理解 package com.tengxun.class6.oop1; /** * @Auther: Yu Panpan * @Date: 2021/12/7 - 12 - 07 ...
- Arm64架构下静态编译Nginx
这段时间,我一直忙于将 Rainbond 源码构建模块移植到 Arm64/aarch64 架构中.这一源码构建模块可以将指定代码仓库中包含的源码,拉取构建成为容器镜像,在各种容器平台中运行.目前支持的 ...
- toString()、String.valueOf、(String)强转
1.基本类型 (1)基本类型没有toString()方法 (2)推荐使用String.valueOf(); (3)无法强转 =========补========= (String)是标准的类型转换,将 ...
- 「THUSCH 2017」大魔法师
Description 大魔法师小 L 制作了 \(n\) 个魔力水晶球,每个水晶球有水.火.土三个属性的能量值.小 L 把这 \(n\) 个水晶球在地上从前向后排成一行,然后开始今天的魔法表演. 我 ...
- Java程序设计基础笔记 • 【第2章 变量与数据类型】
全部章节 >>>> 本章目录 2.1 变量 2.1.1 变量的概念 2.1.2 变量的使用 2.1.3 实践练习 2.2 数据类型 2.2.1 数据类型的种类 2.2.2 ...









