我无法用 jsoup 打开 link
I cannot open a link with jsoup
我正在尝试从卡内基基金会获取赠款说明,为此,我需要打开链接以获取文档。这适用于浏览器,但当我在 Eclipse 上使用 JSoup.connect(url).get() 时则无效。我的代码适用于其他链接,但不适用于这些类型。有解决方法吗?
其中一个链接是“https://www.carnegie.org/grants/grants-database/grant/680882743.0/”。
try {
currentDoc = Jsoup.connect(url).get();
} catch (IOException e) {
throw new IllegalArgumentException("URL cannot be reached");
} catch (Exception e) {
throw new RuntimeException();
}
您尝试访问的 link 正在 return 正在访问包含 HTML 内容的 JSON 文档。这不同于 return 一个 HTML 文档的常规页面。 Jsoup.connect
需要 HTML 文档。
为了处理这种情况,您需要:
- Retrieve the JSON document
- 从
result
JSON属性 中提取HTML内容
- 使用
Jsoup.parse
解析 HTML 内容
您可能想要 treat the HTML content as a fragment,而不是使用 Jsoup.parse(htmlContent, "", Parser.xmlParser())
的文档。
如果您正在浏览一个网站并且需要编写可以同时处理 HTML 和 JSON 文档的代码,我建议采用以下工作流程:
- 使用
URLConnection
检索数据。
- 检查响应中的
content-type
header。
- 如果内容类型是
application/json
,从响应负载中的 result
属性 中提取 HTML 内容,否则假设整个响应负载是 HTML.
- 使用
Jsoup.parse
解析上一步的结果
请注意,此代码假定每个 JSON 文档都有一个名为 result
的 属性,其内容为 HTML。这对于您的特定用例可能就足够了,但绝对不是所有 JSON 文档的有效假设。
我正在尝试从卡内基基金会获取赠款说明,为此,我需要打开链接以获取文档。这适用于浏览器,但当我在 Eclipse 上使用 JSoup.connect(url).get() 时则无效。我的代码适用于其他链接,但不适用于这些类型。有解决方法吗? 其中一个链接是“https://www.carnegie.org/grants/grants-database/grant/680882743.0/”。
try {
currentDoc = Jsoup.connect(url).get();
} catch (IOException e) {
throw new IllegalArgumentException("URL cannot be reached");
} catch (Exception e) {
throw new RuntimeException();
}
您尝试访问的 link 正在 return 正在访问包含 HTML 内容的 JSON 文档。这不同于 return 一个 HTML 文档的常规页面。 Jsoup.connect
需要 HTML 文档。
为了处理这种情况,您需要:
- Retrieve the JSON document
- 从
result
JSON属性 中提取HTML内容
- 使用
Jsoup.parse
解析 HTML 内容
您可能想要 treat the HTML content as a fragment,而不是使用 Jsoup.parse(htmlContent, "", Parser.xmlParser())
的文档。
如果您正在浏览一个网站并且需要编写可以同时处理 HTML 和 JSON 文档的代码,我建议采用以下工作流程:
- 使用
URLConnection
检索数据。 - 检查响应中的
content-type
header。 - 如果内容类型是
application/json
,从响应负载中的result
属性 中提取 HTML 内容,否则假设整个响应负载是 HTML. - 使用
Jsoup.parse
解析上一步的结果
请注意,此代码假定每个 JSON 文档都有一个名为 result
的 属性,其内容为 HTML。这对于您的特定用例可能就足够了,但绝对不是所有 JSON 文档的有效假设。