我想从id =“ LinkNoticia”的所有链接中获取内容 实际上,我的代码加入了第一个链接并提取了内容,但是我无法访问其他内容。
我该怎么办?
这是我的代码(适用于1个链接)
from selenium import webdriver
driver= webdriver.Chrome("/selenium/webdriver/chromedriver")
driver.get('http://www.emol.com/noticias/economia/todas.aspx')
driver.find_element_by_id("LinkNoticia").click()
title = driver.find_element_by_id("cuDetalle_cuTitular_tituloNoticia")
print(title.text)
答案 0 :(得分:0)
首先,页面具有多个具有相同ID的元素这一事实本身就是一个错误。 ID的全部要点对于页面上的每个元素都是唯一的。根据{{3}}:
id =名称 此属性为元素分配名称。 该名称在文档中必须唯一。
冗长的讨论是HTML specs。
由于ID应该是唯一的,所以Selenium的大多数(全部?)实现都只能用于查找具有给定ID(例如find_element_by_id
)的一个元素。我从未见过通过ID查找多个元素的功能。因此,您不能直接将ID用作定位器,需要使用允许多个元素定位的现有功能之一,并将ID
用作允许您选择一组元素的某些属性。您的选择是:
find_elements_by_xpath
find_elements_by_css_selector
例如,您可以这样更改搜索:
links = driver.find_elements_by_xpath("//a[@id='LinkNoticia']");
这将为您提供完整的链接集,并且您需要遍历它们以检索实际的链接(href
)。请注意,如果您仅单击每个链接,就会离开该页面,并且links
中的引用将不再有效。因此,您可以执行以下操作:
通过链接构建hrefs
的列表:
hrefs=[]
for link in links:
hrefs.append(link.get_attribute("href"))
浏览每个href
以检查其标题:
for href in hrefs:
driver.get(href);
title = driver.find_element_by_id("cuDetalle_cuTitular_tituloNoticia")
# etc