繁体   English   中英

我无法从表 selenium、Python 中获取所有行

[英]I can't get all the rows from a table selenium, Python

我正在尝试使用 Python Selenium 获取 HTML 表中所有行的计数。我的表包含 184 行,但我的代码仅返回 33 作为滚动行数。 我已经检查过它只显示 33 行的元素,一旦我向下滚动,旧行就会从检查元素中删除并添加新行。 因此,它保持在 33 不变。 在这种情况下如何将 184 作为 Row Count 并遍历所有行

我的解决方案是:

i = 0
        l = []
        while True:

            i += 1
            
            xpath_row = '//*[@id="fmEviewTable_tbody"]/tr['+ str(i) +']/td[7]'
            time.sleep(0.5)
            try:
                row_text = WebDriverWait(self.driver,10).until(EC.visibility_of_element_located((By.XPATH, xpath_row))).text
            except TimeoutException:
                print("element not found")
            print(f"line {i}, date: {row_text}")
            l.append(row_text)
            
            if i % 10 == 0:
                self.driver.find_element(By.TAG_NAME, 'body').send_keys(Keys.PAGE_DOWN)
                time.sleep(1)

            
            #stopping the loop at the end of row table

            try:
                self.driver.find_element(By.XPATH, '//*[@id="fmEviewTable_tbody"]/tr['+ str(i) +']/td[7]')
            except:
                break

下面的图像是打印屏幕

打印页面屏幕

检查元素打印屏幕

1 . 希望您清楚如何访问表格中的每一行/单元格(可见的 33 行)并从中提取数据。

-- 让我们有两个 2d arrays:主数组,last_page 数组。

  1. 捕获第一页数据和 append 到主二维数组。
  2. 将当前页面数据保存到 last_page 二维数组
  3. 导航到下一页(最后一行单元格单击,然后向下翻页等)
  4. 捕获当前页面数据。
  5. 检查它是否与 last_page 二维数组匹配 - 如果匹配,我们在最后一页 -- break
  6. 否则 append 页面数据到主二维数组
  7. 从 1 开始重复步骤。

最终结果表将是删除重复行(如果有)后的主二维数组。 -- 如果原始 web 表中可能存在重复行,我们将很难将它们与作为抓取一部分的重复条目区分开来。

2 . 另一种可能性是,检查此处用于创建表的 js 库是否公开了获取所有行数据的任何方法。 (例如 eviewtableObj.getData())。您可以使用 execute_script 调用的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM