Jsoup:absUrl 中的空结果(abs:)
Jsoup: null result in absUrl (abs:)
我尝试用 jsoup 制作一个图片链接下载器。我制作了一个下载器 HTML 代码部分,当我完成解析部分时,我发现有时图像链接没有主要部分出现。所以我找到了 absUrl 解决方案,但由于某些原因它不起作用(它给了我 null)。所以我尝试使用 uri.resolve()
,但它给了我不变的结果。所以现在我不知道如何解决它。我附上了我的部分代码,负责解析蚂蚁将 url 写入字符串:
public static String finalcode(String textin) throws Exception {
String text = source(textin);
Document doc = Jsoup.parse(text);
Elements images = doc.getElementsByTag("img");
String Simages = images.toString();
int Limages = countLines(Simages);
StringBuilder src = new StringBuilder();
while (Limages > 0) {
Limages--;
Element image = images.get(Limages);
String href = image.attr("src");
src.append(href);
src.append("\n");
}
String result = src.toString();
return result;
}
您似乎是从字符串而不是 URL 解析 HTML。因为 jsoup 无法知道 URL 这个 HTML 代码来自哪个,所以它无法创建绝对路径。
要为文档设置此 URL,您应该使用 Jsoup.parse(String html, String baseUri)
版本解析它,例如
String url = "http://server/pages/document.htlm";
String text = "<img src = '../images/image_name1.jpg'/><img src = '../images/image_name2.jpg'/>'";
Document doc = Jsoup.parse(text, url);
Elements images = doc.getElementsByTag("img");
for (Element image : images){
System.out.println(image.attr("src")+" -> "+image.attr("abs:src"));
}
输出:
../images/image_name1.jpg -> http://server/images/image_name1.jpg
../images/image_name2.jpg -> http://server/images/image_name2.jpg
其他选项是让 Jsoup 通过提供 URL 而不是带有 HTML
的字符串直接解析页面
Document doc = Jsoup.connect("http://example.com").get();
这样 Document 就会知道它来自哪个 URL,因此它将能够创建绝对路径。
我尝试用 jsoup 制作一个图片链接下载器。我制作了一个下载器 HTML 代码部分,当我完成解析部分时,我发现有时图像链接没有主要部分出现。所以我找到了 absUrl 解决方案,但由于某些原因它不起作用(它给了我 null)。所以我尝试使用 uri.resolve()
,但它给了我不变的结果。所以现在我不知道如何解决它。我附上了我的部分代码,负责解析蚂蚁将 url 写入字符串:
public static String finalcode(String textin) throws Exception {
String text = source(textin);
Document doc = Jsoup.parse(text);
Elements images = doc.getElementsByTag("img");
String Simages = images.toString();
int Limages = countLines(Simages);
StringBuilder src = new StringBuilder();
while (Limages > 0) {
Limages--;
Element image = images.get(Limages);
String href = image.attr("src");
src.append(href);
src.append("\n");
}
String result = src.toString();
return result;
}
您似乎是从字符串而不是 URL 解析 HTML。因为 jsoup 无法知道 URL 这个 HTML 代码来自哪个,所以它无法创建绝对路径。
要为文档设置此 URL,您应该使用 Jsoup.parse(String html, String baseUri)
版本解析它,例如
String url = "http://server/pages/document.htlm";
String text = "<img src = '../images/image_name1.jpg'/><img src = '../images/image_name2.jpg'/>'";
Document doc = Jsoup.parse(text, url);
Elements images = doc.getElementsByTag("img");
for (Element image : images){
System.out.println(image.attr("src")+" -> "+image.attr("abs:src"));
}
输出:
../images/image_name1.jpg -> http://server/images/image_name1.jpg
../images/image_name2.jpg -> http://server/images/image_name2.jpg
其他选项是让 Jsoup 通过提供 URL 而不是带有 HTML
的字符串直接解析页面Document doc = Jsoup.connect("http://example.com").get();
这样 Document 就会知道它来自哪个 URL,因此它将能够创建绝对路径。