Доступ ко второму HTML с использованием селена и питона для извлечения изображения
Я должен извлечь изображения из Интернета, используя селен.
Я должен извлечь изображение, которое присутствует во втором теге 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.
2 ответа
Из фактического пути, которым вы поделились, совершенно очевидно, что желаемый элемент находится в пределах <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")
Попытаться найти элемент что-то вроде xpath в зависимости от индекса.
el = driver.find_element_by_xpath
(// HTML)[1]// IMG
(// HTML)[2]// IMG
Затем вы можете извлечь ссылку / текст SRC каждого изображения
image = el.get_attribute("src")