【问题标题】:Receive table data from external website in Android using jSoup使用 jSoup 从 Android 中的外部网站接收表格数据
【发布时间】:2016-11-15 06:05:10
【问题描述】:

在我的 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 元素遍历到表格的第二列,而无需获取网站的一堆随机部分。

【问题讨论】:

    标签: java android html html-table jsoup


    【解决方案1】:

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

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

    遍历上面的列表,得到第二个&lt;td&gt;,它位于列表的索引1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-24
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多