0

在我的 Android 应用程序中,我想从外部网站接收一些表格数据。

假设网站页面 X 在其 HTML 中包含此表:

<table summary="Foo" border="0" bgcolor="#ffffff" cellpadding="0"> </table>

我将如何接收表格第二列(从上到下)的所有单元格内的字符串?

到目前为止,我所做的如下:

  1. 创建一个异步任务

  2. 使用jSoup抓取外部网站。

我在我的 AsyncTask 中使用了以下代码:

ArrayList<String> list = new ArrayList<String>(); //table data
Document document = Jsoup.connect(url).get();
Elements nextTurns = document.select(":contains(Foo) td:eq(1)");            
        for (Element nextTurn : nextTurns) {
            list.add(nextTurn.text());
        }

运行代码时,它似乎只是停在document.select语句处,GC 快疯了。很长一段时间后,它确实通过了document.select声明,并且确实获得了大部分数据正确,但它仍然具有来自网站的随机其他元素。

我很确定这是完全错误的:

Elements nextTurns = document.select(":contains(Foo) td:eq(1)"); 

但我不确定如何修复它,因为该表也缺少任何 ID。我发现这个页面令人困惑。

如何修复 select 语句和/或 for 循环,以便用第二个表列中的数据填充 ArrayList?

编辑:通过删除contains(Foo)它现在真的很快,所以减少了 1 个问题。我仍然需要帮助将 DOM 元素遍历到表格的第二列,而无需获取网站的一堆随机部分。

4

1 回答 1

1

这是正确的选择,根据您的帖子猜测

document.select("table[summary=Foo] tr");

遍历上面的列表,并获得第二个<td>,它位于列表的索引 1 处。

于 2013-02-27T03:06:07.987 回答