Доступ ко второму 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")

Другие вопросы по тегам