Python Selenium - получить значение href - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь скопировать значение href с веб-сайта, и HTML-код выглядит следующим образом:

<p class="sc-eYdvao kvdWiq">
 <a href="https://www.iproperty.com.my/property/setia-eco-park/sale- 
 1653165/">Shah Alam Setia Eco Park, Setia Eco Park
 </a>
</p>

Я пытался driver.find_elements_by_css_selector(".sc-eYdvao.kvdWiq").get_attribute("href"), но он вернул 'list' object has no attribute 'get_attribute'.Использование driver.find_element_by_css_selector(".sc-eYdvao.kvdWiq").get_attribute("href") вернуло None.Но я не могу использовать xpath, потому что на сайте более 20 ссылок, и мне нужно скопировать все.Использование xpath будет копировать только один.

Если это поможет, все 20+ href отнесены к одному и тому же классу, который sc-eYdvao kvdWiq.

В конечном счете, я бы хотел скопировать все 20+ href и экспортировать их вCSV-файл.

Ценю любую возможную помощь.

Ответы [ 3 ]

0 голосов
/ 25 февраля 2019

XPATH

//p[@class='sc-eYdvao kvdWiq']/a

возвращает элементы, которые вы ищете.

Запись данных в файл CSV не связана с проблемой очистки.Просто попробуйте взглянуть на примеры, и вы сможете это сделать.

0 голосов
/ 25 февраля 2019

Вы хотите driver.find_elements, если более одного элемента.Это вернет список.Для селектора css вы хотите убедиться, что вы выбираете для тех классов, которые имеют дочерний href

elems = driver.find_elements_by_css_selector(".sc-eYdvao.kvdWiq [href]")
links = [elem.get_attribute('href') for elem in elems]

Возможно, вам также понадобится условие ожидания для присутствия всех элементов, расположенных селектором css.

elems = WebDriverWait(driver,10.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".sc-eYdvao.kvdWiq [href]")))
0 голосов
/ 25 февраля 2019

попробуйте что-то вроде:

elems = driver.find_elements_by_xpath("//p[contains(@class, 'sc-eYdvao') and contains(@class='kvdWiq')]/a")
for elem in elems:
   print elem.get_attribute['href']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...