如何从具有动态值的表中废弃数据?

时间:2016-03-01 23:08:14

标签: java android html web-scraping

这可能具有挑战性,因为网站的建设者似乎试图阻止这种情况。

我正在尝试构建一个简单的应用程序来查看网站表中的一些数据。该表位于:

http://www.cepteteb.com.tr/doviz-kurlari

但是,表格数据似乎在页面加载后加载,因此当我尝试获取表格的HTML时,它会变空。如何获取数据表?

我正在使用JSOUP废弃该表。

private class GetData extends AsyncTask<String, Void, Element> {

        @Override
        protected Element doInBackground(String... params) {
            try {
                Document document = Jsoup.connect(params[0]).get();
                Log.e("Yiit",document+"");
                Element table = document.getElementById("dovizTablo");
                return table;
            } catch (Exception e) {
                e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(Element element) {
            super.onPostExecute(element);
            Log.e("Yiit",element+"");
            tvMain.setText(element+"");
        }
    }

结果:

<table class="prices prices2" id="dovizTablo"> 
<thead> 
<tr> 
<th>D&ouml;viz Adı</th> 
<th>CEPTETEB Alış</th> 
<th>CEPTETEB Satış</th> 
</tr> 
</thead> 
<tbody> 
</tbody> 
</table>

预期行为:

<table class="prices prices2" id="dovizTablo">
                            <thead>
                                <tr>
                                    <th>Döviz Adı</th>
                                    <th>CEPTETEB Alış</th>
                                    <th>CEPTETEB Satış</th>
                                </tr>
                            </thead>
                            <tbody>
                            <tr><td>USD</td><td>2.9096 TL</td><td>2.9908 TL</td></tr><tr><td>EUR</td><td>3.1555 TL</td><td>3.2435 TL</td></tr><tr><td>GBP</td><td>4.0558 TL</td><td>4.1688 TL</td></tr></tbody>
                        </table>

2 个答案:

答案 0 :(得分:0)

您提供的此网站使用javascript初始化数据。你不能用Jsoup刮掉它。

我可以想出两种方法来抓取这个页面

  1. 使用WebView访问该网页,然后运行一些js 解析你想要的东西并返回主应用程序。 阅读this如何实现它。

  2. 创建一个可以解析并返回此站点数据的Web服务。

答案 1 :(得分:0)

  

网站的建设者似乎试图阻止这一点。

那你为什么要抓数据?

相反,我建议您找到另一个公开提供所需数据的来源。

您还可以检查您所定位的网站是否提供API。