2016-09-19 3 views
2

웹 사이트 용 웹 스크레이퍼로 작업하고 있지만 현재 코드는 상대 URL로만 이미지를 스크랩합니다. 어떻게 그 URL을 절대 URL로 변환 할 수 있습니까?jsoup로 절대 URL 가져 오기

두 번째 문제 : 수동으로 링크를 결합하여 브라우저에서 링크를 열면 그림 대신 텍스트 파일이 표시됩니다. 브라우저에 정상적으로 표시되는 그림에 대한 직접 링크를 가져올 수 있습니까?

현재 코드 : 현재 출력에서 ​​

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

텍스트 파일 은 이미지가입니다.

ÿØÿàJFIFÿþ> CREATOR : : 파일이 시작하기 때문에 당신은이 jpg 것을 볼 수 있습니다 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 사용하여 이미지를 다운로드 할 수 있습니다 : 얻을 Jsoup의 element.absUrl("src"); 방법도 있다는 것을

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

주 이미지의 절대 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

먼저 절대 URL을 얻어야합니다. 'String src = element.attr ("abs : src");src.substring (0, src.toLowerCase(). lastIndexOf ("& g")). replace ("res2.php? res =", "");' –