2016-09-19 64 views
2

我正在为一个网站的网络刮板工作,但我目前的代码只是相对网址刮到图像。我如何将这些网址转换为绝对网址?获取绝对的网址图像与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 

回答

1

文本文件的图像。你可以看到,这是一个jpg因为文件开头:

ÿØÿàJFIFÿþ> CREATOR:GD-JPEG V1.0(使用IJG JPEG V62)

当您保存文本文件在您的浏览器中(右键单击>另存为...),并将该文件扩展名为.jpg,它将被正确渲染。

您可以从您的src输出取图像URL:

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(); 

注意,这里也是element.absUrl("src");方法Jsoup得到一个图像的绝对URL,尽管这可能不适用于你的情况,因为它指向一个PHP页面。

1

从您的电流输出,只是删除res2.php?res=和结束参数&g=500&u=335

您将得到直接的联系

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

首先,他应该得到绝对网址: 'src = element.attr(“abs:src”); src.substring(0,src.toLowerCase()。lastIndexOf(“&g”))。replace(“res2.php?res =”,“”); –