问题描述
我有这个网页https://rrtp.comed.com/pricing-table-today/
,从那里我仅需要获取有关“时间(小时结束)”和“日前小时价格”列的信息。
我尝试使用以下代码,
Document doc = Jsoup.connect("https://rrtp.comed.com/pricing-table-today/").get();
for (Element table : doc.select("table.prices three-col")) {
for (Element row : table.select("tr")) {
Elements tds = row.select("td");
if (tds.size() > 2) {
System.out.println(tds.get(0).text() + ":" + tds.get(1).text());
}
}
}
但是很遗憾,我无法获取所需的数据。
代码中有什么问题吗? 或无法检索此页面...?
需要一些帮助
1楼
正如我在评论中所说:
您应该点击https://rrtp.comed.com/rrtp/ServletFeed?type=pricingtabledual&date=20150717
因为它是您指向的页面上加载数据的源。
此链接下的数据不是有效的html文档(这就是为什么它对您不起作用的原因),但是您可以轻松地使它“相当”正确。
您要做的就是首先获取响应并在其周围添加<table>..</table>
标记,然后将其解析为html文档就足够了。
Connection.Response response = Jsoup.connect("https://rrtp.comed.com/rrtp/ServletFeed?type=pricingtabledual&date=20150717").execute();
Document doc = Jsoup.parse("<table>" + response.body() + "</table>");
for (Element element : doc.select("tr")) {
System.out.println(element.html());
}