使用 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")
我必须使用 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")