我正在为一个网站开发一个网络抓取工具,但我目前的代码只是将相对的网址写入图片。如何将这些网址转换为绝对网址?
第二个问题:当我手动组合链接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
答案 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页面。