Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何单击每个链接并提取其中的内容-Python Selenium_Python_Selenium_Selenium Webdriver - Fatal编程技术网

如何单击每个链接并提取其中的内容-Python Selenium

如何单击每个链接并提取其中的内容-Python Selenium,python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,我想从id=“LinkNotifia”的所有链接中获取内部内容 实际上,我的代码加入第一个链接并提取内容,但我无法访问其他链接 我怎么做 这是我的代码(它适用于1个链接) 首先,页面有多个具有相同ID的元素这一事实本身就是一个bug。整个ID点对于页面上的每个元素都是唯一的。根据: id=名称 此属性为元素指定名称此名称在文档中必须是唯一的。 需要进行长时间的讨论 由于ID应该是唯一的,因此大多数(所有?)Selenium实现将只具有查找具有给定ID的一个元素的功能(例如,按ID查找元素)。我从

我想从id=“LinkNotifia”的所有链接中获取内部内容 实际上,我的代码加入第一个链接并提取内容,但我无法访问其他链接

我怎么做

这是我的代码(它适用于1个链接)


首先,页面有多个具有相同ID的元素这一事实本身就是一个bug。整个ID点对于页面上的每个元素都是唯一的。根据:

id=名称 此属性为元素指定名称此名称在文档中必须是唯一的。

需要进行长时间的讨论

由于ID应该是唯一的,因此大多数(所有?)Selenium实现将只具有查找具有给定ID的一个元素的功能(例如,
按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
    

  • 您发布的代码只尝试单击第一个链接。那密码在哪里?@JeffC:不完全是他的错,那页是f。。。嗯。。。使用非标准HTML。我已经按照你的提示发布了我的新代码,但仍然不起作用。我已经发布了新代码。。。但是我得到了这个错误:回溯(最近一次调用最后一次):文件“emol1.py”,第14行,在title=driver.find_element_by_id(“cuDetalle_cuTitular_titulonicia”),我从代码中删除了“http”+,然后工作。。。多谢各位
    for href in hrefs:
        driver.get(href);
        title = driver.find_element_by_id("cuDetalle_cuTitular_tituloNoticia")
        # etc