日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java爬虫之下载IMDB中Top250电影的图片

發布時間:2023/12/20 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java爬虫之下载IMDB中Top250电影的图片 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹

??在博客:Scrapy爬蟲(4)爬取豆瓣電影Top250圖片中我們利用Python的爬蟲框架Scrapy,將豆瓣電影Top250圖片下載到自己電腦上。那么,在Java的爬蟲的也可以下載圖片嗎?答案當然是肯定的!
??在本次分享中,我們將利用Java的Jsoup包和FileUtils.copyURLToFile()函數來實現圖片的下載。我們將會爬取IMDB中Top250電影的圖片到自己電腦上,其網頁截圖如下:



思路

??我們實現圖片下載的爬蟲思路如下:

  • 利用Jsoup解析網頁,得到電影圖片的url和name
  • 利用FileUtils.copyURLToFile()函數將圖片下載到本地

準備

??在本文程序中,除了Jsoup包外,還用到了commons-io包,其下載地址為:https://mvnrepository.com/artifact/org.apache.commons/commons-io ,我們主要利用該package中的FileUtils.copyURLToFile(). 讀者需要下載這兩個包,并將它們在Eclipse中加入到項目的路徑中。

程序

??本次分享的主要程序為ImageScraper.java,其完整代碼如下:

package wikiScrape;/* 本爬蟲爬取http://www.imdb.cn/IMDB250/中Top250的圖片* 先利用Jsoup解析得到該網頁中的圖片的url* 然后利用FileUtils.copyURLToFile()函數將圖片下載到本地*/import java.io.*; import java.net.*; import java.util.Date; import java.util.ArrayList;import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; import org.apache.commons.io.FileUtils;public class ImageScraper {public static void main(String[] args) {Date d1 = new Date();System.out.println("爬蟲開始......");// 爬取的網址列表,一共十個網頁ArrayList<String> urls = new ArrayList<String>();urls.add("http://www.imdb.cn/IMDB250/");for(int i=2; i<=10; i++) {urls.add("http://www.imdb.cn/imdb250/"+ Integer.toString(i));}String dir = "E://log/"; // 圖片儲存目錄// 利用循環下載每個頁面中的圖片for(String url: urls) {int index = urls.indexOf(url)+1;System.out.println("開始下載第"+index+"個網頁中的圖片...");getPictures(url, dir);System.out.println("第"+index+"個網頁中的圖片下載完畢!\n");}System.out.println("程序運行完畢!");Date d2 = new Date();// 計算程序的運行時間,并輸出long seconds = (d2.getTime()-d1.getTime())/1000;System.out.println("一共用時: "+seconds+"秒.");}// getContent()函數: 將網頁中的電影圖片下載到本地public static void getPictures(String url, String dir){// 利用URL解析網址URL urlObj = null;try{urlObj = new URL(url);}catch(MalformedURLException e){System.out.println("The url was malformed!");}// URL連接URLConnection urlCon = null;try{// 打開URL連接urlCon = urlObj.openConnection(); // 將HTML內容解析成UTF-8格式Document doc = Jsoup.parse(urlCon.getInputStream(), "utf-8", url);// 提取電影圖片所在的HTML代碼塊Elements elems = doc.getElementsByClass("ss-3 clear");Elements pic_block = elems.first().getElementsByTag("a");for(int i=0; i<pic_block.size(); i++) {// 提取電影圖片的url, nameString picture_url = pic_block.get(i).getElementsByTag("img").attr("src");String picture_name = pic_block.get(i).getElementsByClass("bb").text()+".jpg";// 用download()函數將電影圖片下載到本地download(picture_url, dir, picture_name);System.out.println("第"+(i+1)+"張圖片下載完畢!");}}catch(IOException e){System.out.println("There was an error connecting to the URL");}}// download()函數利用圖片的url將圖片下載到本地public static void download(String url, String dir, String filename) { try { /* httpurl: 圖片的url* dirfile: 圖片的儲存目錄*/URL httpurl = new URL(url); File dirfile = new File(dir); // 如果圖片儲存的目錄不存在,則新建該目錄if (!dirfile.exists()) { dirfile.mkdirs(); } // 利用FileUtils.copyURLToFile()實現圖片下載FileUtils.copyURLToFile(httpurl, new File(dir+filename)); } catch(Exception e) { e.printStackTrace(); } }}

運行

??運行以上程序,結果如下:




??查看E盤中的log文件夾,內容如下:



??一共下載了244張圖片,用時140秒,有幾張圖片下載失敗,效果還算OK.
??本次分享就到此結束嘍,歡迎大家交流~~

總結

以上是生活随笔為你收集整理的Java爬虫之下载IMDB中Top250电影的图片的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。