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

这篇具有很好参考价值的文章主要介绍了Selenium Chrome Webdriver 如何获取 Youtube 悬停文本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

导语

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 等:

# 导入必要的库和模块
  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 模块

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

#  爬虫加强版 设置代理服务器
  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 对象,并打开目标网页:

# 创建 Chrome Webdriver 对象
  driver = webdriver.Chrome(options=chrome_options)
  # 打开目标网页
  driver.get("https://www.youtube.com/watch?v=5qap5aO4i9A")

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

# 等待网页加载完成
  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 定位视频上传时间元素

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

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

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

# 获取各个元素的文本
  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)

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

标题: 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 如何获取 Youtube 悬停文本,selenium,chrome,测试工具,测试用例,集成测试,职场和发展,单元测试

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 文章来源地址https://www.toymoban.com/news/detail-724348.html

到了这里,关于Selenium Chrome Webdriver 如何获取 Youtube 悬停文本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Selenium.Webdriver最新语法教程(附Chrome实例演示)

      “ 随着selenium库的不断更新,现有教程部分语法不适用于当前版本,故笔者写下此篇教程供初学者学习使用、老手快速查询调库使用 。”   编程环境:Pycharm 浏览器:Chrome 示例网站:www.baidu.com 教程内容: Selenium.Webdriver语法、ActionChains库语法、Keys库列表 Selenium.Webdriver:模

    2024年01月23日
    浏览(41)
  • Selenium安装WebDriver最新Chrome驱动(114以后的版本)

    点击进去可以看到下载链接   截止2023.9.12我的谷歌浏览器版本是 116.0.5845.188(正式版本) 我选择了  116.0.5845.96  ( r1160321 )(最后一个) 随着版本更新,大家要根据自己浏览器版本进行选择相应驱动,尽量保证驱动版本和浏览器版本一致,前三位保持一致一般就可以正常使

    2024年02月08日
    浏览(50)
  • 报错 ‘selenium.webdriver‘ has no attribute ‘Chrome‘

    小白在搭建python环境并创建第一个selenium项目后,调用chromedriver插件时,代码报错: ‘selenium.webdriver‘ has no attribute ‘Chrome‘    前提条件:已安装selenium,chromedriver插件放在正确路径下并添加到环境变量。 解决方法:参考调用chrome插件失败 当前项目虚拟环境下的解释器环

    2024年02月12日
    浏览(46)
  • Selenium安装WebDriver Chrome驱动(含 116/117/118/119/120/)

    1、确认浏览器的版本 在浏览器的地址栏,输入 chrome://version/ ,回车后即可查看到对应版本 2、找到对应的chromedriver版本 2.1 114及之前的版本可以通过点击下载chromedriver,根据版本号(只看大版本)下载对应文件 2.2 116版本通过点击下载chromedriver,便可直接下载压缩包。 2.3 116/1

    2024年02月06日
    浏览(51)
  • Selenium安装WebDriver最新Chrome驱动(含116/117/118/119)

    目录 1、确认浏览器的版本 2、找到对应的chromedriver版本   3、解压chromedriver文件,放置chrome的安装目录下 4、设置系统属性  5、确认chromedriver是否安装成功及解决方式 在浏览器的地址栏,输入chrome://version/,回车后即可查看到对应版本    2.1  114及之前的版本可以通过点击下

    2024年02月08日
    浏览(58)
  • linux下安装 Chrome 和 chromedriver 以及 selenium webdriver 使用

    chromedriver 下载地址: https://googlechromelabs.github.io/chrome-for-testing/ (推荐,包含最新稳定版) https://chromedriver.storage.googleapis.com/index.html? http://npm.taobao.org/mirrors/chromedriver/ https://registry.npmmirror.com/-/binary/chromedriver/ 查看版本: chromedriver对应下载地址 现在就可以使用 selenium 的 web

    2024年02月08日
    浏览(75)
  • selenium使用 webdriver.Chrome() 报错,找不到执行文件的解决方法(一)

    使用 driver = webdriver.Chrome() 时,遇到以下报错: selenium.common.exceptions.WebDriverException: Message: \\\'chromedriver\\\' executable needs to be in PATH. 两种解决方法: (1)在webdriver.Chrome()中添加executable_path参数,参数value = chromedriver.exe文件所在路径,示例: from selenium import webdriver chrome_driver_path

    2024年02月11日
    浏览(80)
  • Selenium之Webdriver驱动大全【Firefox、Chrome、IE、Edge、Opera、PhantomJS】

    火狐浏览器历史版本; geckodriver驱动; 驱动与浏览器版本对应关系总结; geckodriver Selenium Firefox min max 0.32.0 ≥ 3.11 (3.14 Python) 102 ESR n/a 0.31.0 ≥ 3.11 (3.14 Python) 91 ESR n/a 0.30.0 ≥ 3.11 (3.14 Python) 78 ESR 90 0.29.1 ≥ 3.11 (3.14 Python) 60 90 0.29.0 ≥ 3.11 (3.14 Python) 60 90 0.28.0 ≥ 3.11 (3.14 Python) 60 90

    2024年02月09日
    浏览(47)
  • Linux CentOS7安装chrome和chromedriver(WebDriver),用于selenium爬虫(java代码演示)

    序号 产品 版本 备注 1 CentOS 7.9 2 chrome 99.0.4844.51 chrome 与 ChromeDriver 的版本必须一致 3 ChromeDriver 99.0.4844.51 chrome 与 ChromeDriver 的版本必须一致 4 selenium 4.12.1 4 JAVA 8 1.1.1. chrome 下载 点击 chrome历史版本下载,按步骤下载 从下载的压缩包解压出rpm,上传 CentOS 系统 1.1.2. chrome 安装 安

    2024年02月20日
    浏览(43)
  • Selenium根据Chrome浏览器 版本自动下载/更新驱动chromedriver.exe webdriver_manager库

    Selenium提供了一个webdriver_manager库,可以帮助自动下载和更新Chrome浏览器的驱动程序chromedriver.exe。您可以按照以下步骤操作: 安装webdriver_manager库。可以在命令行或终端中运行以下命令进行安装: 在Selenium Python脚本中,导入webdriver_manager并使用ChromeDriverManager类来创建ChromeDri

    2024年02月16日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包