2016-09-19 66 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 =」,「」); –