Использование Selenium для поиска изображения с заданной ссылкой src и щелчка

#python #html #selenium #xpath #web-scraping

#python #HTML #selenium #xpath #очистка веб-страниц

Вопрос:

Это html-код веб-сайта, который я хочу очистить

 <div>
  <div class="activityinstance">
    <a class="" onclick="" href="https://www.blablabla.com">
      <img src="http://www.blablabla.com/justapicture.jpg"  class="iconlarge activityicon" alt="" role="presentation" aria-hidden="true">
      <span class="instancename">title<span class="accesshide "> text
      </span>
      </span>
    </a>
  </div>
</div>  

IMAGELINK = «http://www.blablabla.com/justapicture.jpg «

Моя цель — найти на конкретной странице все ссылки, связанные с IMAGELINK, с помощью python. изображение с этого URL-адреса, как правило, отображается несколько раз, и я хочу получить все ссылки, чтобы я мог щелкнуть по ним.

Я попытался найти элементы по имени класса «a», чтобы извлечь все ссылки на странице, и таким образом, если бы я мог найти их XPath, я мог бы просто отформатировать «/ img» и получить атрибут «src» из этого элемента. Но проблема в том, что я не нашел способа извлечь XPath с заданным элементом webdriver.

ПРИМЕЧАНИЕ: у меня нет доступа к Xpath элемента, если я не напишу какую-либо функцию для его генерации

Комментарии:

1. что вы пробовали? Показать код.

Ответ №1:

Найдите все элементы с тегом img и распечатайте src атрибут:

 imgs = driver.find_elements_by_xpath("//img")
for img in imgs:
    print(img.get_attribute("src"))
  

Ответ №2:

Я думаю, он хотел родительский href с img src, который равен

 imgs = driver.find_elements_by_xpath("//img[src='http://www.blablabla.com/justapicture.jpg']/parent::a")
for img in imgs:
    print(img.get_attribute("href"))
  

Комментарии:

1. Вы правы, это то, что я хотел. но это работает не так, как вы предлагаете. он возвращает сообщение: нет такого элемента: невозможно найти элемент: {«метод»:»xpath»,»селектор»:»//img[src=» moodle. technion.ac.il/theme/image.php/fordson/assign/1603222249 /… «} (Информация о сеансе: chrome=86.0.4240.111)

2. Я думаю, это потому, что изображение находится глубже в дереве, чем просто //img[src=….]

3. Используйте @src вместо src