如何用Python Selenium 来获取href的值?

coding2live 2021-01-29 15:12:31 106

我想从一个网页获取某个链接的href属性值:

<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

另外,我需要获取20多个链接的href属性,所以不能用xpath,因为它一次只能获取一个。

这20多个链接都有共同的classsc-eYdvao kvdWiq

我的需求的是一次性获取这20多个链接的值,并且保存到csv文件.

以下答案仅供参考

可以driver.find_elements方法,如果选中的元素有多个,则会返回一个list。

另外,如果你想用css选择器的话,需要保证选中的元素含有href这个属性。

那么代码就可以参考下面:

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

可能还需要使用等待条件,确保你需要的元素都加载了:

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