如何在Python中使用react.js和Selenium从网页中抓取数据?

2023-11-22

我在抓取使用的网站时遇到一些困难react.js并且不知道为什么会发生这种情况。

This is the html of the website: enter image description here

我想做的是点击带有class: play-pause-button btn btn -naked。但是,当我使用 Mozilla gecko webdriver 加载页面时,会抛出异常:

Message: Unable to locate element: .play-pause-button btn btn-naked

这让我觉得也许我应该做点别的事情来获得这个元素? 到目前为止,这是我的代码:

driver.get("https://drawittoknowit.com/course/neurological-system/anatomy/peripheral-nervous-system/1332/brachial-plexus---essentials")
    # execute script to scroll down the page
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);var lenOfPage=document.body.scrollHeight;return lenOfPage;")
    time.sleep(10)        
    soup = BeautifulSoup(driver.page_source, 'lxml')
    print(driver.page_source)
    play_button = driver.find_element_by_class_name("play-pause-button btn btn-naked").click()
    print(play_button)

有谁知道我该如何解决这个问题?任何帮助深表感谢


看来你很接近。使用时find_element_by_class_name() you can't通过多个classes并且你只能通过一个班级名称,即只有以下其中之一:

  • play-pause-button
  • btn
  • btn-naked

通过多个班级时find_element_by_class_name()你将面临消息:无效的选择器:不允许复合类名


Solution

作为替代方案,由于该元素是Angular元素,至click()关于你必须诱导的元素WebDriver等待为了element_to_be_clickable()您可以使用以下任一方法定位策略:

  • Using CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.play-pause-button.btn.btn-naked")))click()
    
  • Using XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='play-pause-button btn btn-naked']")))click()
    
  • Note:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中使用react.js和Selenium从网页中抓取数据? 的相关文章

  • 从字符串到类型的词法转换

    最近 我尝试用Python存储和读取文件中的信息 遇到了一个小问题 我想从文本文件中读取类型信息 从 string 到 int 或 float 的类型转换非常有效 但从 string 到 type 的类型转换似乎是另一个问题 当然 我尝试了
  • 在python中将文本文件解析为列表

    我对 Python 完全陌生 我正在尝试读取包含单词和数字组合的 txt 文件 我可以很好地读取 txt 文件 但我正在努力将字符串转换为我可以使用的格式 import matplotlib pyplot as plt import num
  • GraphQL - POST 正文丢失。您忘记使用 body-parser 中间件了吗?

    我的电脑上不断出现以下错误graphql查询但不确定原因 POST body missing Did you forget use body parser middleware 我在这里做了什么奇怪的事吗 我已经尝试了在线 body par
  • 如何使用Python将WebP图像转换为Gif?

    我已经尝试过这个 from PIL import Image im Image open this webp im save that gif gif save all True 这给了我这个错误 类型错误 不支持的操作数类型 tuple
  • Hydrate with RTK Query 确实会抛出错误

    我有一个非常简单的组件来显示来自本地 API 的数据 使用 Nextjs API 路由制作 我使用 RTK 查询来获取数据 const api createApi reducerPath data baseQuery fetchBaseQu
  • 带图像的简单 GUI [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我试图在简单的 GUI 上显示一些卡
  • 将 ESLint 与 Airbnb 样式和选项卡结合使用 (React.js)

    我正在开发一个 React js 应用程序 并且正在尝试检查我的代码 我将 ESLint 与 Airbnb 风格一起使用 但出现以下错误 src Test jsx 4 2 error Unexpected tab character no
  • 全新安装 create-next-app 后,无效的 href 传递给路由器错误

    在我的本地计算机上安装 nextjs 应用程序后 使用create next app我在控制台中收到此错误Invalid href passed to router 有谁知道如何解决它 我尝试使用to属性而不是href属性在Link组件的但
  • 如何从 Dockerfile 安装 Python 3.7 和 Pip

    我正在尝试构建基于 Ubuntu 18 04 的自定义 Docker 映像 Ubuntu 预装了 Python 3 6 但我想 1 安装 Python 3 7 2 将其设置为默认 Python 版本 这样就可以使用python代替pytho
  • 在 createAsyncThunk 上调度操作?

    我有一个 thunk 动作是由createAsyncThunk 我想在调用 api 更新状态之前调度一个操作 我不想使用动作getProducts pending因为我想要派遣actionLoading 对于其他 thunk 操作 我怎样才
  • 无法打开 Python。错误 0xc000007b

    我最近一直在学习 Python 3 我在我的上网本 32 位 Windows 7 上创建简单的小程序没有任何问题 当我将它安装在我的上网本上时 我没有遇到任何问题 但现在我已经开始使用它了 我想将它安装在我的台式机上 并且我有一个 我的桌面
  • 更改 pandas 中多个日期时间列的时区信息

    有没有一种简单的方法可以将数据帧中的所有时间戳列转换为本地 任何时区 不是逐列进行吗 您可以有选择地将转换应用于所有日期时间列 首先 选择它们select dtypes https pandas pydata org pandas docs
  • selenium.common.exceptions.WebDriverException:消息:服务

    当我使用 selenium 控制 Chrome 时遇到了麻烦 这是我的代码 from selenium import webdriver driver webdriver Chrome When i tried to operate it
  • Python:计算数据帧列中所有行中特定字符的实例数

    我有一个包含列 toaddress ccaddress body 的数据框 df 我想迭代数据帧的索引 以获取 toaddress 和 ccaddress 字段中电子邮件地址的最小 最大和平均数量 这是通过计算这两列中每个字段中的 和 的实
  • Python 中的 @staticmethod 与 @classmethod

    方法和方法有什么区别装饰的 https peps python org pep 0318 with staticmethod http docs python org library functions html staticmethod和
  • Django 在选择列表更改时创建毫无意义的迁移

    我正在尝试使用可调用创建一个带有选择字段的模型 以便 Django 在选择列表更改时不会创建迁移 如中所述this https stackoverflow com questions 31788450 stop django from cr
  • 将一个列表的元素除以另一个列表的元素

    我有两个清单 比如说 a 10 20 30 40 50 60 b 30 70 110 正如你所看到的 列表 b 由一个列表的元素总和组成 其中 window 2 b 0 a 0 a 1 10 20 30 etc 如何获得另一个列表 该列表由
  • 查找给定节点的最高权重边

    我在 NetworkX 中有一个有向图 边缘的权重从 0 到 1 表示它们发生的概率 网络连通性非常高 所以我想修剪每个节点的边缘 只保留最高概率的节点 我不确定如何迭代每个节点并仅保留最高权重in edges在图中 有没有一个networ
  • 为什么我们应该在 def __init__(self, n) -> None: 中使用 -> ?

    我们为什么要使用 gt in def init self n gt None 我读了以下摘录来自 PEP 484 https www python org dev peps pep 0484 the meaning of annotatio
  • 如何禁止 celery 中的 pickle 序列化

    Celery 默认使用 pickle 作为任务的序列化方法 如中所述FAQ http ask github com celery faq html isn t using pickle a security concern 这代表一个安全漏

随机推荐

  • 对数字字符串的 ArrayList 进行排序

    最快的排序方法是什么ArrayList
  • 用户窗体未触发初始化或激活事件

    我在工作表中保留了一个用户窗体控制按钮来启动一个宏 该宏又显示一个用户窗体 在窗体中我希望在复选框中显示打开的文件 使用工作簿集合 我希望运行一个执行的宏仅对用户选择的文件执行操作 因此 对于工作表中的按钮 我分配了以下宏 Private
  • Jackson 注释被忽略

    我正在尝试使用 Jackson 注释来重新命名序列化过程中生成的一些 json 标签 所有注释都编译良好 当我运行时 杰克逊序列化可以正常工作 但所有杰克逊注释都被完全忽略 即使像 JsonIgnore 或 JsonProperty 这样的
  • 当后端在 Docker 容器中运行时,Keycloak 令牌验证失败

    我正处于构建网络应用程序的早期阶段 我打算使用 Keycloak 作为身份提供者来保护后端 在我的本地计算机上 我将 Keycloak 和后端作为 docker 容器运行 但在不同的网络上 因为最终在生产中 我希望运行 Keycloak 的
  • Flutter:http get 请求不适用于 apk 发布

    关于我的问题有几个类似的问题 但所有这些问题中给出的解决方案都不适合我 所以我尝试用我的问题的详细信息打开另一个问题 我希望有人能帮助我 Context 我正在学习 flutter 和 dart 作为初学者 我想实现一个使用 CRUD 操作
  • 条形图图例上的框架边框可以删除吗?

    我正在 Mathematica 中创建用于各种绘图 图表绘制的应用程序 最终它将有一个 GUI 但第一步是获得正确的代码 并且足够简单以便 GUI 可以管理 我很难将图例设置为没有框架 这是一个最小的例子 有一些选项BarChart已经定制
  • Android将CID位置转换为坐标

    我构建了一个 Android 应用程序 它可以处理来自 Google 地图的共享意图并显示它的坐标 问题是他们发送了一个短网址 我用 Google 的 url Shortner api 进行解码 在某些情况下 结果长链接是这种类型的 谁能帮
  • “指向未初始化的字节”Valgrind 错误

    我一直在使用Valgrind在我的代码中查找内存泄漏 虽然没有发现内存泄漏 但报告了一些错误 所有这些错误都源自单个函数 类方法 17043 ERROR SUMMARY 10100 errors from 3 contexts suppre
  • 让 Github 在收到更新时推送到远程服务器

    让 Github 自动将任何更新推送到远程服务器的设置是什么 这对于维护 Github 上的代码库以及让网站运行该代码库非常有用 我的存储库位于我自己的计算机上 这就是我工作的地方 我将更改提交到本地存储库 并将它们推送到我的 Github
  • 什么是堆中的类型对象

    我知道当在堆中创建对象时 它们还有额外的两个字段 同步块索引 类型对象指针 所以我想知道Type Object是什么时候在Heap内存中创建的以及它保存什么样的数据 它只代表Type的元数据 我还没有找到更多关于这方面的细节 Type 对象
  • ASP MVC3 在actionlink中插入html标签

    我是 ASP MVC3 的新手 我正在使用 Razor 引擎 我的问题是我已经以表单构建了主导航
  • 如何获得行排名?

    HI 我昨天实际上发布了类似 或相同 的问题 但我认为我需要发布一个新问题 因为我有简短但明确的问题 我有下表 id point 1 30 2 30 3 29 4 27 5 28 6 26 我想要的是 获取所有用户按排名排序 用户 1 和
  • 多个 OpenGL 视图 (Cocos2D)

    Note 任何可以帮助我正确解决这个问题的人都会得到100点赏金 在我的应用程序中 我将 UIKit 与 Cocos2D 混合在一起 我使用 addSubview 和 removeFromSuperview 调用做了一些简单的自定义视图动画
  • 在 scalatest 中用什么代替符号?

    在 scalatest 中 您应该能够使用如下符号测试布尔属性 iter shouldBe traversableAgain 但这种表示法在最新版本的 scala 中已被弃用 所以现在你应该这样写 iter shouldBe Symbol
  • 对硬盘中的大量整数进行排序

    给定硬盘上 100 GB 整数数据 RAM 为 2 GB 如何以最少的磁盘操作对整数进行排序 这里从磁盘获取一个数字被视为一次磁盘操作 尽管实际上可以获取一块数据 我们可以使用磁盘上的额外空间进行临时存储 而不需要考虑清理已使用的临时空间的
  • Hibernate 显示真实的 SQL [重复]

    这个问题在这里已经有答案了 if I set
  • 如何配置 MVC6 应用程序以在 IIS 上运行?

    因此 我正在 Visual Studio 2015 中构建一个 MVC6 应用程序 并已设法解决大部分问题 但是 我尚未解决部署问题 在 MVC4 我之前使用的 中 我们的流程 发布到一个文件夹 然后在 IIS 中设置网站 右键单击Site
  • 在 python 中模拟传值行为

    我想模拟 python 中的按值传递行为 换句话说 我想绝对确保我编写的函数不会修改用户提供的数据 一种可能的方法是使用深复制 from copy import deepcopy def f data data deepcopy data
  • 线性布局和相对布局有什么区别?

    线性布局和相对布局有什么区别 LINEAR LAYOUT 在线性布局中 顾名思义 所有元素都是 以线性方式显示 水平或垂直 此行为设置为 android orientation 这是节点的一个属性 线性布局 线性布局将每个子元素一个接一个地
  • 如何在Python中使用react.js和Selenium从网页中抓取数据?

    我在抓取使用的网站时遇到一些困难react js并且不知道为什么会发生这种情况 This is the html of the website 我想做的是点击带有class play pause button btn btn naked 但