Jsoup取得了错误的结果

时间:2017-07-11 01:43:21

标签: java jsoup

使用Jsoup。该URL在浏览器上运行良好。但它在服务器上取错了结果。我也将maxBodySize设置为“0”。但它仍然只获得前几个标签。此外,数据甚至与浏览器数据不同。你能帮我个忙吗?

String queryUrl = "http://www.juso.go.kr/addrlink/addrLinkApi.do?confmKey=U01TX0FVVEgyMDE3MDYyODE0MTYyMzIyMTcw&currentPage=1&countPerPage=20&keyword=연남동";

Document document = Jsoup.connect(queryUrl).maxBodySize(0).get();

1 个答案:

答案 0 :(得分:1)

您是否知道此端点返回分页数据?您的网址要求第一页提供20个条目。我假设未指定这些条目的顺序,因此每次调用此端点时都可以获得不同的数据 - 检查是否存在可以确定特定排序顺序的URL参数。

无论如何要阅读所有2037条目,你必须按顺序完成。检查以下代码:

using (var streamWriter = new StreamWriter(stream, Encoding.UTF8, 1024, true))
{
    // TODO: do something 
}

在这种情况下,我们要求每页100个条目(这是该端点支持的最大数量),我们称之为21次,只要调用特定页面返回任何final String baseUrl = "http://www.juso.go.kr/addrlink/addrLinkApi.do"; final String key = "U01TX0FVVEgyMDE3MDYyODE0MTYyMzIyMTcw"; final String keyword = "연남동"; final int perPage = 100; int currentPage = 1; while (true) { System.out.println("Downloading data from page " + currentPage); final String url = String.format("%s?confmKey=%s&currentPage=%d&countPerPage=%d&keyword=%s", baseUrl, key, currentPage, perPage, keyword); final Document document = Jsoup.connect(url).maxBodySize(0).get(); final Elements jusos = document.getElementsByTag("juso"); System.out.println("Found " + jusos.size() + " juso entries"); if (jusos.size() == 0) { break; } currentPage += 1; } 元素。希望它有助于解决您的问题。