【问题标题】:Webdriver not returning some dataWebdriver不返回一些数据
【发布时间】:2021-07-19 06:51:14
【问题描述】:

我正在尝试从网站获取一些信息。 Web Inspector 显示 html 源代码,以及其中呈现的 JavaScript。所以我想用chromedriver来渲染它,目的是提取某些信息,这些信息不能通过简单的网站请求访问。

现在看起来令人困惑的是,即使是驱动程序也没有返回任何东西。 我的代码如下所示:

driver = webdriver.Chrome('path/Chromedriver')
driver.get(url)
soup = BeautifulSoup(driver.page_source, 'html.parser')
results = soup.find_all("tr", class_="odd")

网站是: https://www.amundietf.co.uk/professional/product/view/LU1681038243

当打开 Web Inspector 时,还有什么其他内容会呈现到 html 中,Chromedriver 无法处理吗?
提前感谢您的回答!

【问题讨论】:

  • 您的代码没有问题。我已经执行了完全相同的代码并且能够提取 tr 行。
  • 当我尝试打印这样的结果时,我只会得到空括号:[]
  • 可能是网络延迟,请在 driver.get(url) 之后休眠或等待。您还看到浏览器上的详细信息页面吗?
  • @simpleApp 让程序休眠 3 秒会返回一些东西,但有没有办法在 python 中使用await 或类似的东西
  • 它们更像是同步等待,其他一些测试框架支持等待角度或反应技术堆栈,但它们主要是在 Jave 脚本上。对于python,请参考selenium-python.readthedocs.io/waits.html

标签: python html selenium web-scraping webdriver


【解决方案1】:

至少你需要接受隐私设置,而不是点击validateDisclaimer到站点:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup


url = "https://www.amundietf.co.uk/professional/product/view/LU1681038243"
driver = webdriver.Chrome(executable_path='/snap/bin/chromium.chromedriver')
driver.implicitly_wait(10)
driver.get(url)
driver.find_element_by_id("footer_tc_privacy_button_3").click()
driver.find_element_by_id("validateDisclaimer").click()
WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".fpFrame.fpBannerMore #blockleft>#part_principale_1")))
soup = BeautifulSoup(driver.page_source, 'html.parser')
results = soup.find_all("tr", class_="odd")
print(results)

之后,您需要等待页面加载并正确定义您要查找的元素。 您的问题确实包含很多问题,应该一一解决。 我只是指出了第一个问题。

更新 我解决了这个问题。 您需要自己解析结果。 所以,你遇到了问题:

  1. 没有点击两个按钮。
  2. 没有等待您需要加载的表。
  3. 没有任何等待。在 Selenium 中,您必须使用它们。

【讨论】:

    猜你喜欢
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    相关资源
    最近更新 更多