【问题标题】:when I try to get li elements inside a ul I only get one li and nothing else当我尝试在 ul 中获取 li 元素时,我只得到一个 li 而没有别的
【发布时间】:2021-09-24 09:53:14
【问题描述】:

我正在尝试为我的公司构建一个数据提取,我需要在一个 html 列表中获取数据,但是当我执行我的代码时,我只得到下面我共享的代码的单个 li 元素的文本。

网站源截图和我的结果。

我的代码:

from selenium import webdriver
driver = webdriver.Safari()

driver.get("http://turkosb.com/kaynarca-mobilya-ihtisas-organize-sanayi-bolgesi.html")


results = driver.find_element_by_xpath("//ul[@class='firma-info']/li")
print(results.text)

但是尽管我努力了,但我得到的结果是一样的,我只从第一个 li 元素中获取文本,如下所示:

YETKİLİ KİŞİ: Fikret ARSLAN 

【问题讨论】:

    标签: python html selenium


    【解决方案1】:

    这是因为driver.find_element_by_xpath 正在返回第一个元素。它可能会突出显示 DOM 中的所有 li,但您要求查找单个元素并返回第一个元素。

    使用find_elements 查找所有li 标记并迭代以从中获取文本。

    results = driver.find_elements_by_xpath("//ul[@class='firma-info']/li")
    for result in results:
         print(result.text)
    

    【讨论】:

      【解决方案2】:

      find_element 是获取唯一的单个 Web 元素。其中find_elements 用于获取网络元素列表。

      所以而不是

      results = driver.find_element_by_xpath("//ul[@class='firma-info']/li")
      

      试试这个:

      results = driver.find_elements_by_xpath("//ul[@class='firma-info']/li")
      

      现在find_elements 的结果是一个列表。像这样迭代

      for res in results:
          print(res.text)
      

      【讨论】:

        猜你喜欢
        • 2021-09-01
        • 2022-12-05
        • 2011-08-26
        • 2019-08-15
        • 2022-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多