【发布时间】:2016-06-14 14:38:26
【问题描述】:
这可能具有挑战性,因为网站的建设者似乎试图阻止这一点。
我正在尝试构建一个简单的应用程序来查看网站表中的一些数据。该表位于此处:
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ö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>
【问题讨论】:
-
尝试使用 Xpath -- stackoverflow.com/questions/7085539/does-jsoup-support-xpath -- 例如 (//*[@id="dovizTablo"]/tbody/tr[1]/td[1]) -- 如何获取 Xpath -- youtube.com/watch?v=vCNLPHP3E_U
-
所以如果我理解正确的话,xpath 是用来轻松访问所需元素的。但是,我导航到表格没有问题,它只是空的。所以 xpath 可能无论如何都不会有帮助。
-
您可能是对的,因为这听起来像是时间问题。 Xpath 获取元素内部的内容。您是否尝试过在刮之前延迟 2 到 3 秒?
标签: java android html web-scraping