#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. Если ваша проблема решена, пожалуйста, отметьте это как ответ. Чтобы другие знали, что проблема решена.