文章目录

  • 一、前言
  • 二、selenium获取数据
    • 1、第一种方法
    • 2、第二种方法
    • 3、总结

一、前言

本文仅用于交流学习,不得用于商业行为

如果单纯的使用requests库,是不能获取到完整的源代码的;

如果想进行分析的话,刷新获取数据,则会出现这样的界面:

因此,选择使用selenium是非常好的一个选择!

二、selenium获取数据

以歌单广场的一页为例,获取到歌单的封面

这里使用两个方法:

  1. 使用selenium获取到网页源代码,然后使用pyquery库进行解析,从而获取数据
  2. 直接使用selenium获取数据,利用selenium的页面元素定位

1、第一种方法

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from pyquery import PyQuery as pq
import timestart = time.time()
# 配置
option = Options()
# 为Chrome配置无头模式
option.add_argument("--headless")
# 启动浏览器时加入配置
driver = webdriver.Chrome(options=option)
# 访问网页
driver.get('https://music.163.com/#/discover/playlist/?order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&offset=35')
# 切换到iframe表单
driver.switch_to.frame('g_iframe')
# 获取源代码
html = driver.execute_script('return document.documentElement.outerHTML')
# 利用pyquery库进行解析
doc = pq(html)
# 定位到所有含有封面图片链接的节点
links = doc('#m-pl-container li div img')
# 打印封面图片链接数量
print(f"该页面含有{len(links)}张图片")
# 进行遍历
for link in links.items():# 获取封面图片链接src = link.attr('src')# 打印链接print(src)
# 关闭所有页面
driver.quit()
print("总共用时:{}".format(time.time()-start))
  • 输出结果:
    图片链接过多,仅展示部分结果
该页面含有35张图片
http://p2.music.126.net/DHRO3u68N0HbSF_Is08S6A==/109951166538173595.jpg?param=140y140
http://p2.music.126.net/FkcsntKQ2JgvJZktcJ0uPw==/109951166647447993.jpg?param=140y140
http://p2.music.126.net/9ROYGXi0iJyY97bgbdEDSg==/109951166741042192.jpg?param=140y140
总共用时:5.121241807937622

2、第二种方法

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import timestart = time.time()
# 配置
option = Options()
# 为Chrome配置无头模式
option.add_argument("--headless")
# 启动浏览器时加入配置
driver = webdriver.Chrome(options=option)
# 访问网页
driver.get('https://music.163.com/#/discover/playlist/?order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&offset=35')
# 切换到iframe表单
driver.switch_to.frame('g_iframe')
# 定位到所有含有封面图片链接的节点
links = driver.find_elements(By.CSS_SELECTOR, '#m-pl-container .j-flag')
# 打印封面图片链接数量
print(f"该页面含有{len(links)}张图片")
# 进行遍历
for element in links:# 打印封面图片链接print(element.get_attribute('src'))
# 关闭所有页面
driver.quit()
print("总共用时:{}".format(time.time()-start))
  • 输出结果:
    图片链接过多,仅展示部分结果
该页面含有35张图片
http://p2.music.126.net/DHRO3u68N0HbSF_Is08S6A==/109951166538173595.jpg?param=140y140
http://p2.music.126.net/FkcsntKQ2JgvJZktcJ0uPw==/109951166647447993.jpg?param=140y140
http://p2.music.126.net/9ROYGXi0iJyY97bgbdEDSg==/109951166741042192.jpg?param=140y140
http://p2.music.126.net/fkZa3CIMPpwv45MwjaGtVQ==/109951166623085189.jpg?param=140y140
总共用时:5.274672031402588

3、总结

这两种方法进行比较,就速度而言,第一种方法略快。

且第一种方法更适合喜欢通过页面源代码进行获取数据的小伙伴。

作者:远方的星
CSDN:https://blog.csdn.net/qq_44921056
本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。

【selenium实例一】网易云歌单封面图片相关推荐

  1. Python爬虫-selenium爬取网易云歌单

    文章目录 (一)工欲善其事必先利其器-安装工具 Selenium 浏览器 (二)实战 (一)工欲善其事必先利其器-安装工具 Selenium Selenium是一个强大的网络数据采集工具,其最初是为网 ...

  2. python爬虫实例网易云-爬虫实战(二) 用Python爬取网易云歌单

    最近,博主喜欢上了听歌,但是又苦于找不到好音乐,于是就打算到网易云的歌单中逛逛 本着 "用技术改变生活" 的想法,于是便想着写一个爬虫爬取网易云的歌单,并按播放量自动进行排序 这篇 ...

  3. Python爬虫实战: 爬取网易云歌单

    这篇文章,我们就来讲讲怎样爬取网易云歌单,并将歌单按播放量进行排序,下面先上效果图 1.用 requests 爬取网易云歌单 打开 网易云音乐 歌单首页,不难发现这是一个静态网页,而且格式很有规律,爬 ...

  4. 爬虫python代码网易云_爬虫实战(二) 用Python爬取网易云歌单

    最近,博主喜欢上了听歌,但是又苦于找不到好音乐,于是就打算到网易云的歌单中逛逛 本着 "用技术改变生活" 的想法,于是便想着写一个爬虫爬取网易云的歌单,并按播放量自动进行排序 这篇 ...

  5. 爬虫实战(二) 用Python爬取网易云歌单

    最近,博主喜欢上了听歌,但是又苦于找不到好音乐,于是就打算到网易云的歌单中逛逛 本着 "用技术改变生活" 的想法,于是便想着写一个爬虫爬取网易云的歌单,并按播放量自动进行排序 这篇 ...

  6. 网易云歌单重合率2.0

    前言: 之前写过一个小工具输入网易云音乐上的昵称,即可查看两人喜欢的音乐中,有哪些是相同的,重合率有多少. 感兴趣的可以看这里:网易云歌单重合率1.0 但是之前的版本存在几个问题: 速度慢,这个其实是 ...

  7. 网易云歌单歌曲实时拉取

    网易云歌单歌曲实时拉取 最近个人公众号Mozi的bug日志上线了新的音乐推送API,下面来讲讲推送的实现过程. 一.抓取目的 抓取歌单中的歌曲列表,并提取对应歌曲的外链.歌曲名单以及作者名 测试歌曲外 ...

  8. Python爬虫之网易云歌单音频爬取(解决urlretrieve爬取文件不能播放问题)

    网易云歌单音频爬取 写在前面:最近学习爬虫,对小说和图片都进行过简单爬取,所以打算爬取音频,但是其中遇到点问题也解决了,写下博客记录并希望对大家也有帮助. 爬取对象:对于目前主流的几个音频播放网站,我 ...

  9. iTunes音乐导入过程记录(专辑图片、歌手修改,iTunes使用,网易云歌单批量下载)

    所需工具 1.iTunes 2.音乐标签修改器. 3.下载好的音乐 网易云歌单在线下载. 4.一点耐心 详细步骤 1.先调整一下iTunes中的音乐存储位置 菜单栏选编辑-偏好设置-高级 更改iTun ...

最新文章

  1. Oracle优化器:星型转换
  2. 我的第三个网页制作:b、i、s、u、sub、sup标签的使用
  3. hdfs user 连接_Python入门操作HDFS
  4. Jlink SWD和Jtag下载失败总结
  5. hdu 3874(树状数组+离线算法)
  6. oracle RAC切换归档
  7. Valid BFS? CodeForces - 1037D(思维 bfs)
  8. 【maven】Mac的仓库拷贝到Windows的离线环境下无法引入问题
  9. Python+tkinter实现验证码输入和切换
  10. 最低什么样的学历,才可以选择转行web前端?
  11. vue中使用富文本编辑器wangEditor及踩坑
  12. c#自定义可拖动变形控件
  13. Linux系统编程 -- 进程与线程之间差别 进程是系统资源分配的最小单位,线程是进程执行的最小单位
  14. linux设置程序开机自启动
  15. 解析rtcm32报文工具_RTKLIB编译及RTCM数据读取样例
  16. 腾讯翻译君在线翻译怎么翻译整个文件_Word文档翻译:分享下面几种方法
  17. 麦当劳中国首个IT战略研发中心在南京启用;大食代积极布局中国西南市场 | 美通企业日报...
  18. HTML多画面同时播放,视频两个画面同时播放,两个视频放在同一画面|视频左右或上下两个画面...
  19. 高德地图 定位失败,10: 定位服务启动失败 解决办法
  20. 在土豆传的第一篇视频

热门文章

  1. 23-基于51单片机土壤湿度检测及自动浇花系统(带时间显示)
  2. Python操作Excel(二)
  3. Java并发编程之(二)管程
  4. 什么是空热量的食物?“空热量”的谬论
  5. java精尽面试题MySQL面试高频一百问(工程师方向)
  6. [梁山好汉说IT] 用实例来深入理解容器概念
  7. mysql之第n高的薪水
  8. Win10 下报错 WerFault.exe -解决方法亲测有效
  9. 不降价的促销利器--让渡营销
  10. 绝世舞姬计算机弹音乐,绝世舞姬(伴奏)