首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Selenium webdriver从网页中提取表格数据

使用Selenium webdriver从网页中提取表格数据
EN

Stack Overflow用户
提问于 2015-12-02 13:58:04
回答 2查看 3.3K关注 0票数 1

我使用Selenium webdriver (在Eclipse中)来自动化web应用程序,但是现在的要求是捕获一个html页面中显示的表数据。我尝试了herehere和其他几个网站的解决方案,但我们的网页显示表格的方式似乎有点不同

尝试使用div类名作为String Text = driver.findElements(By.xpath("//div[@class='ag-row ag-row-even ag-row-level-0']//tr")).get(0).getText();获取值,但不起作用,引发索引越界异常

EN

回答 2

Stack Overflow用户

发布于 2015-12-02 16:05:25

在我看来,您似乎已经构建了一个定制表。从附加图像中的HTML摘录来看,其结构类似于:

代码语言:javascript
复制
<div class="ag-body-container" ...>
    <div class="row_1_class" ...>
        <div class="column_1_class" ...>
        <div class="column_2_class" ...>
        <div class="column_3_class" ...>
        <div class="column_4_class" ...>
        ... etc
    <div class="row_2_class" ...>
        <div class="column_1_class" ...>
        <div class="column_2_class" ...>
        <div class="column_3_class" ...>
        <div class="column_4_class" ...>
        ... etc

但是你的xPath假设你有表格行(我猜可能是表格单元格):

代码语言:javascript
复制
By.xpath("//div[@class='ag-row ag-row-even ag-row-level-0']//tr")

导致您的数组为空(有趣的是,您没有得到NoSuchElement异常,也许在您的html树中的某个地方有一些tr标记)。

现在,我不确定您要从该表中提取什么数据,但您最好是根据class属性获取所有行,并根据class属性为每一行获取所有列数据(或者您甚至可以使用col属性来获取这些数据)。

编辑:要获取所有元素,您可以获取所有行,然后为每行获取所有列数据:

代码语言:javascript
复制
//Get all the rows from the table
List<WebElement> rows = driver.findElements(By.xpath("//div[contains(@class, 'ag-row')));

//Initialize a new array list to store the text
List<String> tableData = new ArrayList<String>();

//For each row, get the column data and store into the tableData object
for (int i=0; i < rows.size(); i++) {
    //Since you also have some span tags inside (and maybe something else)
    //we first get the div columns
    WebElement tableCell = rows.get(i).findElements(By.xpath("//div[contains(@class, 'ag-cell')]"));
    tableData.add(tableCell.get(0).getText());
}

您还可以将数据存储到双向数组(或任何这种排序)中,然后根据行号和列号位置访问数据。

票数 1
EN

Stack Overflow用户

发布于 2015-12-02 15:35:53

我不确定,但可能你的webElements数组是空的,这就是为什么你会得到索引越界异常。

如果您试图从整个行中获取值,我认为find_elements应该输出父div -class=“ag- WW_SALES ag-class=-ag- row -0”

这只是我的假设基础上的描述和图像所附。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34035861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档