【发布时间】:2020-12-15 13:41:33
【问题描述】:
我正在从 HTML 网站上的一系列表格中抓取数据。该网站的表格数量取决于输入,因此我尝试使用:.find_elements_by_xpath("//table") 来简单地获取页面上所有表格元素的列表。
但是,在这种情况下,它只返回页面上的第一个表。当我使用find_element_by_xpath(//table[2]) 时,它会返回另一个表,但使用find_elements 不会。
网站入口是here,点击底部发送即可。 (我正在尝试从结果页面获取数据)。我在 Firefox Webbrowser 上使用 Python 中的 Selenium。
有趣的是,标题表的 XPath 为table[1],这就引出了table[0] 在哪里的问题。
【问题讨论】:
-
你怎么知道 selenium 不会返回所有元素?请显示代码,因为它应该返回 2 个表。关于 xpath [1] - xpath 中的计数器从 1 开始,而不是 0。所以 [1] 确实是第一个表。并且 //table[0] 不存在 =)
-
嘿,又打开了这个网站,现在只有一张桌子。
-
嘿,所以当我运行以下代码时,它只返回一个值 1,而不是预期的 2。 (一个表用于页眉,另一个用于数据表)。
count = driver.find_elements_by_xpath("//table") print(len(count)) -
您是否尝试在计数之前明确等待?
-
@AmrutaPande 嗨,是的,我在计算之前使用了显式等待。同样,如果我使用
EC. presence_of_element_located(By. XPATH, "//table[2])它加载表 2 就好了,但是,EC.presence_of_all_elements_located找不到其他表
标签: python selenium selenium-webdriver firefox xpath