[英]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 数组。
最终结果表将是删除重复行(如果有)后的主二维数组。 -- 如果原始 web 表中可能存在重复行,我们将很难将它们与作为抓取一部分的重复条目区分开来。
2 . 另一种可能性是,检查此处用于创建表的 js 库是否公开了获取所有行数据的任何方法。 (例如 eviewtableObj.getData())。您可以使用 execute_script 调用的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.