当前位置: 代码迷 >> java >> 使用Jsoup进行实时Web爬网
  详细解决方案

使用Jsoup进行实时Web爬网

热度:14   发布时间:2023-07-31 11:19:26.0

我有这个网页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());
        }
    }
}

但是很遗憾,我无法获取所需的数据。

代码中有什么问题吗? 或无法检索此页面...?

需要一些帮助

正如我在评论中所说:

您应该点击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());
}