2016-09-19 25 views
2

私はウェブサイトのウェブスクレイパーで作業していますが、現在のコードでは相対URLだけを画像にスクラップしています。どうすればこれらのURLを絶対URLに変換できますか?jsoupで絶対URLを取得する

第2の問題:リンクを手作業で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:(IJG JPEGのV62を使用して)gd- JPEG v1.0の

テキストファイルを保存するとき(右クリック>名前を付けて保存...)をクリックし、ファイルに.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(); 

注取得するJsoupでelement.absUrl("src");方法もあることをイメージの絶対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 "); ( "res2.php?res ="、 ""); 'replace2.php?res ="、 ""); –

関連する問題