java - Android中使用jSoup从外部网站接收表数据

标签 java android html html-table jsoup

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

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

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

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

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

  1. 创建 AsyncTask

  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。我发现this page令人困惑。

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

编辑:通过删除 contains(Foo) 现在速度非常快,因此减少了 1 个问题。我仍然需要帮助将 DOM 元素遍历到表的第二列,而不需要获取网站的一堆随机部分。

最佳答案

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

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

循环上面的列表,得到第二个<td>它位于列表的索引 1 处。

关于java - Android中使用jSoup从外部网站接收表数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15097937/

相关文章:

java - Heroku Java 应用程序是否能够访问外部站点上的资源?

java - 如何对 JTextArea 使用 KeyEventListener 并使用 Tab 自动完成列表中的单词

android - LruCache 是否在内存不足时释放条目?

android - 如何以编程方式隐藏谷歌软键盘上显示的数字

jquery - 忽略文档长度中的绝对位置 Div

jquery - Accordion 无法处理我的所有数据

java - 如何在 Java 中获取 memcpy?

java - 比较已存储为对象的数组

android - 当应用程序在后台运行时,Android是否清除局部变量

javascript - 模态未启动 jquery