Selenium находит имя атрибута с помощью пробела

#python #selenium #web-scraping #selenium-chromedriver

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

Вопрос:

В настоящее время я изучаю Selenium для очистки веб-страниц. Однако я обнаружил проблемы с поиском следующего атрибута и получением ссылки на атрибут:

<a class="card cardListing" data-contentid href="/abc/def/gh.com"> == $0

Я хочу получить «/abc/ def / gh.com» из атрибута «data-contentid href». Я пробовал driver.find_elements_by_xpath("//*[@data-contentid href]") , но мне сказали, что это неверный селектор.

Если кто-нибудь знает, как обращаться с именем атрибута с пробелом посередине, не могли бы вы помочь мне разобраться в этом?

Большое вам спасибо.

Ответ №1:

Прежде всего, это два разных атрибута data-contentid и href . И чтобы получить href = "/abc/def/gh.com" . вы должны использовать xpath , как показано ниже —

Обратите внимание — в вашем коде вы используете find_elements , а не find_element . find_elements вернет коллекцию элементов.

 driver.find_elements_by_xpath("//a[@href='/abc/def/gh.com']")
  

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

1. Большое вам спасибо! На целевом веб-сайте есть список ссылок в разделе «data-contentid href», который я хочу получить. Указание «@href», похоже, возвращает мне что-то отличное от того, что я хочу.

2. Попробуйте — driver.find_elements_by_xpath("//a[@data-contentid and @href='/abc/def/gh.com']") или driver.find_elements_by_xpath("//a[@data-contentid] and [@href='/abc/def/gh.com']")

3. Большое вам спасибо.

4. Если ваша проблема решена, пожалуйста, отметьте это как ответ. Чтобы другие знали, что проблема решена.