使用jsoup获取图像的绝对URL

时间:2016-09-19 07:18:24

标签: java jsoup

我正在为一个网站开发一个网络抓取工具,但我目前的代码只是将相对的网址写入图片。如何将这些网址转换为绝对网址?

第二个问题:当我手动组合链接http://www.arena-offshore.com/iframe/list/../../res2.php?res=site/big/08032016130016552-GEMI-gözcü1.jpg&g=500&u=335并在浏览器中打开链接时,我只看到某种文本文件而不是图片。是否可以直接链接到图片,通常在浏览器中显示?

当前代码:

Document doc;
String url = "http://www.arena-offshore.com/iframe/list/list-detail.php?category=1&page=&id=956&id=956";
try {
doc = Jsoup.connect(url)
.userAgent("Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36")
.get();
Elements elements = doc.select("#u702_img");

for (Element element : elements) {
String src = element.attr("src");
System.out.println(src);
}
} catch (IOException e) {
e.printStackTrace();
}

输出

../../res2.php?res=site/big/08032016130016552-GEMI-gözcü1.jpg&g=500&u=335

2 个答案:

答案 0 :(得分:1)

从您当前的输出中,只需删除res2.php?res=并结束参数&g=500&u=335

您将获得直接链接

http://www.arena-offshore.com/site/big/08032016130016552-GEMI-g%C3%B6zc%C3%BC1.jpg

答案 1 :(得分:1)

文本文件图像。您可以看到它是jpg,因为文件以:

开头
  

ÿØÿàJFIFÿþ> CREATOR:gd- jpeg v1.0(使用IJG JPEG v62)

当您在浏览器中保存文本文件时(右键单击>另存为...)并为该文件指定.jpg扩展名,它将正确呈现。

您可以从src输出中获取图片网址:

String baseUrl = "http://www.arena-offshore.com/";
String output = "../../res2.php?res=site/big/08032016130016552-GEMI-gözcü1.jpg&g=500&u=335";
int start = output.indexOf("=") + 1;
int end   = output.indexOf("&", start);
String imageUrl = baseUrl + output.substring(start, end); 
// Gives:
// http://www.arena-offshore.com/site/big/08032016130016552-GEMI-g%C3%B6zc%C3%BC1.jpg

然后你可以使用jsoup下载图像:

byte[] bytes = Jsoup.connect(url).ignoreContentType(true).execute().bodyAsBytes();

请注意,Jsoup中还有element.absUrl("src");方法来获取图像的绝对URL,尽管这可能不适用于您的情况,因为它指向php页面。