Доступ ко второму HTML с использованием селена и питона для извлечения изображения - PullRequest
0 голосов
/ 07 октября 2018

Я должен извлечь изображения из Интернета, используя селен.

Мне нужно извлечь изображение, которое присутствует во втором 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 ]

0 голосов
/ 07 октября 2018

Из общего пути , который вы указали, совершенно очевидно, что требуемый элемент находится в пределах <iframe>, поэтому вам необходимо:

  • Индуцировать WebDriverWait для желаемого доступного фрейма и переключения на него .
  • Индуцирование 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")
    
0 голосов
/ 07 октября 2018

попробуйте найти элемент, например xpath, в зависимости от индекса.

el = driver.find_element_by_xpath

(// html) [1]// img

(// html) [2] // img

, затем вы можете извлечь ссылку / текст src для каждого изображения

image = el.get_attribute ("src")

...