下載Servlet生成的圖片

想抓取某些網站經過servlet生成的圖片,簡單的就是經過HttpClient來實現: java

String url = "http://xxxx/pictureservlet?size=100";
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);

HttpResponse response = httpclient.execute(httpGet);
 
try {
System.out.println(response.getStatusLine());
HttpEntity entity = response.getEntity();
if (entity.isStreaming()) {
String destinationFile = "d://tmp//image.jpg";
OutputStream os = new FileOutputStream(destinationFile);
entity.writeTo(os);
}
} finally {
httpGet.releaseConnection();
}
固然上面的代碼也能夠直接使用scala來寫,更方便。另外使用Htmlunit也許更簡單,這個是模仿瀏覽器的行爲。

若是使用sbt增長 web

"org.seleniumhq.selenium" % "selenium-java" % "2.35.0" 就能夠使用了。 瀏覽器

val webClient = new WebClient
  val page: UnexpectedPage = webClient.getPage("http://xxx/pictureservlet?size=100")
  val input = page.getWebResponse().getContentAsStream()
  val destinationFile = "d://tmp//image.jpg"
  val os = new FileOutputStream(destinationFile)
  os.write(IOUtils.toByteArray(input))
  os.close()
  input.close()
爲何下載圖片要單獨寫這文章,由於以前下載的圖片的網站必需要求從首頁進入,可能增長了session或相關的標識來記錄下載圖片是否是從首頁來進入,若是模仿cookie或session比較麻煩的時候,這時使用selenium來模擬瀏覽器操做也許是最方便的。

上面的HttpClient對這種狀況也是可行的,直接發送一次首頁請求,這個鏈接是共享的,那麼進行下載圖片是就認爲是有效的請求了。 cookie

相關文章
相關標籤/搜索