IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 【selenium实例一】网易云歌单封面图片 -> 正文阅读

[开发测试]【selenium实例一】网易云歌单封面图片

一、前言

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

如果单纯的使用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 time

start = 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 time

start = 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
本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:52:24  更:2022-03-08 22:52:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 2:26:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码