Python Selenium - 获取href值

问题描述

我正在尝试从网站复制 href 值,html 代码如下所示:

I am trying to copy the href value from a website, and the html code looks like this:

<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' 对象没有属性 'get_attribute'.使用 driver.find_element_by_css_selector(".sc-eYdvao.kvdWiq").get_attribute("href") 返回 None.但我不能使用 xpath,因为该网站有 20+ href 我需要全部复制.使用 xpath 只会复制一个.

I've tried driver.find_elements_by_css_selector(".sc-eYdvao.kvdWiq").get_attribute("href") but it returned 'list' object has no attribute 'get_attribute'. Using driver.find_element_by_css_selector(".sc-eYdvao.kvdWiq").get_attribute("href") returned None. But i cant use xpath because the website has like 20+ href which i need to copy all. Using xpath would only copy one.

如果有帮助,所有 20 多个 href 都归入同一类,即 sc-eYdvao kvdWiq.

If it helps, all the 20+ href are categorised under the same class which is sc-eYdvao kvdWiq.

最终我想复制所有 20+ href 并将它们导出到 csv 文件.

Ultimately i would want to copy all the 20+ href and export them out to a csv file.

感谢任何可能的帮助.


解决方案

如果有多个元素,您需要 driver.find_elements.这将返回一个列表.对于 CSS 选择器,您要确保选择那些具有子 href 的类

You want driver.find_elements if more than one element. This will return a list. For the css selector you want to ensure you are selecting for those classes that have a child href

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

您可能还需要一个等待条件来等待由 css 选择器定位的所有元素.

You might also need a wait condition for presence of all elements located by css selector.

elems = WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".sc-eYdvao.kvdWiq [href]")))

相关文章