Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Selenium Chrome Webdriver 如何获取 Youtube 悬停文本

Selenium Chrome Webdriver 如何获取 Youtube 悬停文本

原创
作者头像
jackcode
发布于 2023-07-24 07:37:38
发布于 2023-07-24 07:37:38
85000
代码可运行
举报
文章被收录于专栏:爬虫资料爬虫资料
运行总次数:0
代码可运行
亿牛云代理
亿牛云代理

导语

Youtube 是一个非常流行的视频分享平台,有时候我们可能想要爬取一些视频的信息,比如标题、播放量、点赞数等。但是有些信息并不是直接显示在网页上的,而是需要我们将鼠标悬停在某个元素上才能看到,比如视频的时长、上传时间等。这些信息被称为悬停文本,它们是通过 JavaScript 动态生成的,所以我们不能用普通的 HTML 解析方法来获取它们。那么,我们该如何用爬虫来获取 Youtube 的悬停文本呢?本文将介绍一种方法,使用 Selenium Chrome Webdriver 来模拟浏览器操作,获取 Youtube 的悬停文本。

正文

概述

Selenium 是一个自动化测试工具,它可以控制浏览器进行各种操作,比如打开网页、输入文字、点击按钮等。Selenium 支持多种浏览器和编程语言,其中 Chrome Webdriver 是用于控制 Chrome 浏览器的驱动程序。我们可以使用 Selenium Chrome Webdriver 来模拟人类的浏览行为,获取 Youtube 的悬停文本。

亮点

使用 Selenium Chrome Webdriver 的优点有:

  • 可以获取动态生成的网页内容,不受 JavaScript 的限制
  • 可以模拟鼠标悬停、滚动、点击等操作,更接近真实的用户体验
  • 可以设置代理服务器,突破网站的反爬机制
  • 可以设置浏览器选项,如无头模式、隐身模式等,提高爬虫效率和安全性案例下面我们来看一个具体的案例,如何使用 Selenium Chrome Webdriver 来获取 Youtube 的悬停文本。我们以 https://www.youtube.com/watch?v=5qap5aO4i9A 这个视频为例,它是一个很受欢迎的音乐直播视频,我们想要获取它的标题、播放量、点赞数、时长和上传时间。 首先,我们需要导入必要的库和模块,如 Selenium、Chrome Webdriver 等:
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 导入必要的库和模块
from selenium import webdriver # 导入 Selenium 库
from selenium.webdriver.common.by import By # 导入 By 类
from selenium.webdriver.support.ui import WebDriverWait # 导入 WebDriverWait 类
from selenium.webdriver.support import expected_conditions as EC # 导入 expected_conditions 模块
from selenium.webdriver.common.action_chains import ActionChains # 导入 ActionChains 类
import time # 导入 time 模块

然后,我们需要设置代理服务器,这里我们使用亿牛云提供的代理服务器:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 亿牛云 爬虫加强版 设置代理服务器
proxyHost = "www.16yun.cn" # 代理服务器域名或 IP 地址
proxyPort = "31111" # 代理服务器端口号
 
# 代理验证信息
proxyUser = "16YUN" # 代理用户名
proxyPass = "16IP" # 代理密码

# 构造代理认证字符串
proxyAuth = proxyUser + ":" + proxyPass

# 构造 Chrome 选项对象
chrome_options = webdriver.ChromeOptions()

# 添加代理扩展
chrome_options.add_extension("Proxy-Auto-Auth_v2.0.crx")

# 添加代理认证参数
chrome_options.add_argument("--proxy-server=http://" + proxyHost + ":" + proxyPort)
chrome_options.add_argument("--proxy-auth=" + proxyAuth)

接下来,我们需要创建一个 Chrome Webdriver 对象,并打开目标网页:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 创建 Chrome Webdriver 对象
driver = webdriver.Chrome(options=chrome_options)

# 打开目标网页
driver.get("https://www.youtube.com/watch?v=5qap5aO4i9A")

然后,我们需要等待网页加载完成,并找到我们想要获取的元素:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 等待网页加载完成
wait = WebDriverWait(driver, 10) # 设置最长等待时间为 10 秒
wait.until(EC.presence_of_element_located((By.ID, "container"))) # 等待 id 为 container 的元素出现

# 找到视频标题元素
title = driver.find_element_by_xpath("//h1/yt-formatted-string") # 使用 XPath 定位视频标题元素

# 找到视频播放量元素
views = driver.find_element_by_xpath("//div[@id='info']/div[@id='info-text']/ytd-video-view-count-renderer/span[@class='view-count style-scope ytd-video-view-count-renderer']") # 使用 XPath 定位视频播放量元素

# 找到视频点赞数元素
likes = driver.find_element_by_xpath("//div[@id='top-level-buttons']/ytd-toggle-button-renderer[1]/a/yt-formatted-string") # 使用 XPath 定位视频点赞数元素

# 找到视频时长元素
duration = driver.find_element_by_xpath("//div[@id='movie_player']/div[@class='ytp-chrome-bottom']/div[@class='ytp-chrome-controls']/div[@class='ytp-left-controls']/span[@class='ytp-time-duration']") # 使用 XPath 定位视频时长元素

# 找到视频上传时间元素
upload_time = driver.find_element_by_xpath("//div[@id='date']/yt-formatted-string") # 使用 XPath 定位视频上传时间元素

接着,我们需要模拟鼠标悬停在视频时长和上传时间元素上,才能获取它们的文本:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 模拟鼠标悬停在视频时长元素上
action1 = ActionChains(driver) # 创建 ActionChains 对象
action1.move_to_element(duration) # 移动鼠标到视频时长元素上
action1.perform() # 执行操作

# 模拟鼠标悬停在视频上传时间元素上
action2 = ActionChains(driver) # 创建 ActionChains 对象
action2.move_to_element(upload_time) # 移动鼠标到视频上传时间元素上
action2.perform() # 执行操作

最后,我们可以获取各个元素的文本,并打印出来:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 获取各个元素的文本
title_text = title.text # 获取视频标题文本
views_text = views.text # 获取视频播放量文本
likes_text = likes.text # 获取视频点赞数文本
duration_text = duration.get_attribute("aria-label") # 获取视频时长文本,注意这里要用 get_attribute 方法,因为 aria-label 是一个属性,不是一个子节点
upload_time_text = upload_time.get_attribute("aria-label") # 获取视频上传时间文本,同理

# 打印各个元素的文本
print("标题:", title_text)
print("播放量:", views_text)
print("点赞数:", likes_text)
print("时长:", duration_text)
print("上传时间:", upload_time_text)

运行上面的代码,我们可以得到如下的输出:

代码语言:txt
AI代码解释
复制
标题: lofi hip hop radio - beats to relax/study to
播放量: 3.8亿次观看
点赞数: 1000万次赞同
时长: 视频长度 0:00 / 0:00。
上传时间: 已于 2020年2月22日发布。

结语

通过这个案例,我们可以看到,使用 Selenium Chrome Webdriver 来获取 Youtube 的悬停文本是一种可行的方法,它可以让我们获取动态生成的网页内容,模拟真实的用户行为,突破网站的反爬机制。当然,这种方法也有一些缺点,比如需要安装浏览器和驱动程序,运行速度运行相对较慢,占用较多的系统资源等。因此,我们需要根据不同的爬虫需求,选择合适的爬虫工具和方法。如果你想了解更多关于 Selenium Chrome Webdriver 的用法和技巧,你可以访问官方网站 https://www.selenium.dev/ 参考一些优秀的教程。希望这篇文章对你有帮助,如果你有任何问题或建议,欢迎留言评论。谢谢你的阅读和支持!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容
在当今数据驱动的世界中,抓取动态网页内容变得越来越重要,尤其是像抖音这样的社交平台,动态加载的评论等内容需要通过特定的方式来获取。传统的静态爬虫方法难以处理这些由JavaScript生成的动态内容,Selenium爬虫技术则是一种能够有效解决这一问题的工具。本文将以采集抖音评论为示例,介绍如何使用Selenium模拟鼠标悬停,抓取动态内容,并结合代理IP技术来应对反爬机制。
jackcode
2024/10/22
4150
Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容
python selenium定位元素
查找元素: find_element_by_id find_element_by_name find_element_by_xpath find_element_by_link_text find_element_by_partial_link_text find_element_by_tag_name find_element_by_class_name find_element_by_css_selector 查找多个元素: find_elements_by_name find_elements_by_xpath find_elements_by_link_text find_elements_by_partial_link_text find_elements_by_tag_name find_elements_by_class_name find_elements_by_css_selector
用户5760343
2022/05/13
1.9K0
Python Selenium 库使用技巧
Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE,Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。
王 瑞
2022/12/28
1.3K0
Python Selenium 库使用技巧
Python Selenium库的使用「建议收藏」
Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。
全栈程序员站长
2022/07/29
4.6K0
Python Selenium库的使用「建议收藏」
selenium自动化测试报告_selenium自动化测试断言
注意:driver.close() ,当前关闭的是主窗口,只有完成页面切换才可以关闭当前新的页面
全栈程序员站长
2022/11/15
2.7K0
selenium自动化测试报告_selenium自动化测试断言
自动化-Selenium 3-常用API(Python版)
ActionChains类提供的鼠标事件常用方法(perform()执行所有ActionChains中存储的行为):
wangmcn
2022/07/22
1.5K0
自动化-Selenium 3-常用API(Python版)
知否知否-----selenium知多少
关于selenium,就不多介绍什么了,主要就是用来进行自动化的工具。怎样进行自动化,这才是它大放异彩的地方。下面就来看看吧!
我被狗咬了
2019/09/23
5900
知否知否-----selenium知多少
Python爬虫技术系列-04Selenium库的使用
针对119.0.x的版本驱动需要在 https://googlechromelabs.github.io/chrome-for-testing/ 中下载
IT从业者张某某
2023/11/07
1.5K0
Python爬虫技术系列-04Selenium库的使用
Selenium鼠标操作事件
日常的UI自动化测试活动中,有时候会用到鼠标操作事件。Selenium WebDriver 给我们提供了一个类来处理这类事件:ActionChains。 ActionChains 类提供了鼠标操作的常用方法:
Altumn
2019/10/21
1.2K0
大模型开发实战:(一)使用 Selenium 进行网页爬虫
Selenium 由 Jason Huggins 于 2004 年发起,最初名为 JavaScript Testing Framework,后因受到希腊神话中“月亮女神 Selene”的启发而更名为 Selenium。它最初是为了解决网页自动化测试需求而诞生的开源工具,但因其能模拟真实浏览器操作(如点击、输入、滚动等),也被广泛用于网页数据爬取。爬虫工具有很多,例如 BeautifulSoup4,为什么选择自动化测试工具 Selenium 进行爬虫?目前绝大部分 Web 应用都使用 JavaScrip 动态加载数据,而 BeautifulSoup4 只能解析初始页面的 HTML 源码,对于动态加载的数据无法获取,因此使用 Selenium 模拟用户,完成数据加载的操作。
张高兴
2025/05/21
1K0
大模型开发实战:(一)使用 Selenium 进行网页爬虫
actionchains 的用法_actions怎么才能使用
from selenium.webdriver.common.action_chains import ActionChains
全栈程序员站长
2022/08/03
1K0
知否知否-----selenium知多少(二)
上期我们讲了一些selenium一些最近的元素定位,触发事件,等待等等,今天我们继续来看看接下来的知识点。
我被狗咬了
2019/09/23
1.6K0
知否知否-----selenium知多少(二)
Selenium必须掌握的元素定位方法
Web端的UI自动化测试,目前使用比较多的就是Python+Selenium。当前一些UI自动化测试工具也是基于Selenium做开发的。 最近经常有童鞋后台询问selenium元素定位方法,其实网上学习资料很多,只要你肯动手,都可以搜的到。元素定位对于自动化测试来说是比较重要而且繁琐的一件事。接下来就来讲一下如何使用webdriver提供的基本元素定位方法。 再次声明:本站点已经和百度、必应、谷歌等各大搜索引擎达成长期的战略合作协议,你有任何疑问都可以通过以上公司提供的免费服务得到解答。
Altumn
2019/10/20
5K0
【Python爬虫实战】深入解析 Selenium:从元素定位到节点交互的完整自动化指南
Selenium 是进行网页自动化操作的强大工具,在测试、数据抓取、用户行为模拟等领域广泛应用。本指南将带您详细了解如何在 Selenium 中查找和定位页面元素,并深入介绍各种节点交互方法,包括点击、输入文本、选择选项等操作。无论您是初学者还是经验丰富的开发者,本篇文章将帮助您掌握 Selenium 自动化的核心技能,实现更高效的网页自动化操作。
易辰君
2024/11/07
1.3K0
Python爬虫技术系列-06selenium完成自动化测试V01
使用selenium库完成动点击下一页,点击视频操作等过程, 如果你非要说这是XX,那我也不过多辩解,毕竟批评不自由,赞美无意义。
IT从业者张某某
2023/10/16
5400
Python爬虫技术系列-06selenium完成自动化测试V01
Selenium Python使用技巧(二)
您可能需要在多种情况下针对不同的浏览器(例如Firefox,Chrome,Internet Explorer,Edge)测试代码。跨不同浏览器测试网站的做法称为自动浏览器测试。要使用Selenium自动化测试执行自动浏览器测试,您应该在单元测试代码或pytest代码中合并对这些浏览器的选择性处理。下面显示了一个代码片段(利用pytest)来处理多个浏览器:
FunTester
2020/02/17
7.5K0
《selenium2 python 自动化测试实战》(4)——鼠标事件
鼠标事件包含在ActionChains类中,导入时只需要: from selenium.webdriver.common.action_chains import ActionChains 导入类即可: 常用的方法有: context_click() ——右键单击 double_click() ——双击 drag_and_drop(鼠标按下的元素,鼠标释放的元素) ——拖动 move_to_element() ——鼠标悬停在一个元素上 click_and_hold() ——按下鼠标
孟船长
2018/05/18
9400
《手把手教你》系列练习篇之6-python+ selenium自动化测试(详细教程)
  前面文章我们了解了如何获取元素的text属性值,和判断元素是否显示在页面(is_displayed()方法),本文我们来学习下,判断一个控件是否被选中状态、获取页面元素的大小、组合键-全选文字、组合键-退格键删除文本和鼠标右键等练习的内容。
北京-宏哥
2019/12/10
1.4K0
《手把手教你》系列练习篇之6-python+ selenium自动化测试(详细教程)
《手把手教你》系列练习篇之7-python+ selenium自动化测试 -压轴篇(详细教程)
  “压轴”原本是戏曲名词,指一场折子戏演出的倒数第二个剧目。在现代社会中有很多应用,比如“压轴戏”,但压轴也是人们知识的一个盲区。“压轴”本意是指倒数第二个节目,而不是人们常说的倒数第一个,倒数第一个节目称“压台”。想看“压台篇”,敬请关注宏哥
北京-宏哥
2019/12/10
1.5K0
《手把手教你》系列练习篇之7-python+ selenium自动化测试 -压轴篇(详细教程)
selenium爬取博客园文章保存到mysql并自动发布
它这里是有js动态加载的标签,而且经过观察()里面的数字是会随机变化的,并不是写死的(推测是一种防爬虫策略)。
py3study
2020/01/20
8780
推荐阅读
相关推荐
Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验