我试图提取" Prev。的值。关闭"来自finance.yahoo.com/q?s=[Symbol]
以下是HTML的内容,
<div class="yui-u first yfi-start-content">
<div class="yfi_quote_summary">
<div id="yfi_quote_summary_data" class="rtq_table">
<table id="table1">
<tbody>
<tr>
<th scope="row" width="48%">Prev Close:</th>
<td class="yfnc_tabledata1">208.25</td>
</tr>
<tr>
<th scope="row" width="48%">Open:</th>
<td class="yfnc_tabledata1">211.00</td>
</tr>
<tr>
<th scope="row" width="48%">Bid:</th>
<td class="yfnc_tabledata1">N/A</td>
</tr>
</tbody>
</table>
</div>
</div>
以下是我尝试提取所需数据的方式。
Document doc = Jsoup.connect("http://finance.yahoo.com/q?s=goog").get();
Elements e = doc.select("td.yfnc_tabledata1");
String close = e.get(0).text();
然而,这给出了一个IndexOutOfBoundsException,表示ArrayList的大小为0,因此e不能返回一个元素。
我做错了什么?
答案 0 :(得分:0)
在访问Elements
之前,请确保它不为空。这样,您就可以避免IndexOutOfBoundsException
。另外,正如@Hasanaga提到的那样,您应该设置userAgent
和referrer
标题。
Document doc = Jsoup
.userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6") //
.referrer("http://finance.yahoo.com") //
.connect("http://finance.yahoo.com/q?s=goog") //
.get();
Elements e = doc.select("td.yfnc_tabledata1");
if (e.isEmpty()) {
throw new RuntimeException("Unable to locate table cell.");
}
String close = e.get(0).text();