使用 selenium 和 python 访问第二个 HTML 以提取图像

Accessing Second HTML using selenium and python to extract image

我必须使用 selenium 从 Web 中提取图像。

我必须提取第二个 html 标签中的图像。有人可以帮助我指向第二个 html 标签中存在的图像。

示例 html 代码。

<html>

    <img class = "img-responsive" src="test.png">

    <html>

    <img src = 'test1.png'>

    </html>

<html>

实际路径如下所示:

html/body/div/div/div/div/div/iframe.embed-responsive-item/html/body/img

我试过使用driver.find_element_by_xpath('//*[@src]')

它给了我除第二个 html 标签中的图像之外的所有图像。

尝试定位元素 类似于 xpath 取决于索引。

el = driver.find_element_by_xpath

(//html)[1]//img

(//html)[2]//img

然后你可以提取每张图片的src link/text

图片=el.get_attribute("src")

从您分享的 实际路径 很明显,所需的元素在 <iframe> 内,因此您需要:

  • 诱导 WebDriverWait 以获得所需的 iframe 并切换到它.
  • 诱导 WebDriverWait 使所需的 元素可见 并且您可以使用以下解决方案:
  • 代码块:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    # other lines of code
    WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@class='embed-responsive-item']")))
    img_src = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//html/body/img"))).get_attribute("src")