【问题标题】:Selenium Find By X path ErrrorSelenium 通过 Xpath 错误查找
【发布时间】:2017-10-23 12:51:27
【问题描述】:

我是 Selenium 的新手,正在尝试抓取 YouTube,但遇到了一个奇怪的问题。我试图抓取以下 HTML:

这是我的代码:

a = w.find_element_by_xpath("//a[@class='yt-simple-endpoint style-scope ytd-video-renderer']")

当我在交互式 shell 中执行此操作时,它可以正常工作,但是当我在保存脚本后重新运行脚本时,它会显示一个错误,提示找不到该元素。

【问题讨论】:

  • 请将代码插入文本而不是图片。
  • 这似乎是时间问题。你可以尝试实现Implicit or Explicit wait
  • 可能 a 元素进入了框架。在尝试查找元素之前,您应该更改为框架。
  • 或者这个 xpath 可能有多个元素。尝试使用 findelements 函数,然后打印列表的大小。
  • 我没有得到一件事。它在交互式 shell 中有效,但在我重新运行脚本时无效。此外,当我尝试抓取 Instagram 时,也会出现同样的问题。

标签: python selenium web selenium-webdriver web-scraping


【解决方案1】:

似乎这纯粹是一个同步问题。我们需要诱导WebDriverWaitExplicitWait 将驱动程序实例与浏览器实例同步,如下所示:

a = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_xpath("//a[@class='yt-simple-endpoint style-scope ytd-video-renderer' and contains(@title,'Calvin Harris - Summer')]"))

【讨论】:

    猜你喜欢
    • 2016-03-12
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2021-09-17
    • 2015-11-10
    • 2018-12-14
    • 1970-01-01
    • 2021-10-11
    相关资源
    最近更新 更多