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

发布时间:2019-11-21 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Java爬虫之下载IMDB中Top250电影的图片脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

介绍

  在博客:Scrapy爬虫(4)爬取豆瓣电影Top250图片中我们利用Python的爬虫框架Scrapy,将豆瓣电影Top250图片下载到自己脑上。那么,在Java的爬虫的也可以下载图片吗?答案当然是肯定的!
  在本次分享中,我们将利用Java的Jsoup包和FileUtils.copyURLToFile()函数来实现图片的下载。我们将会爬取IMDB中Top250电影的图片到自己电脑上,其网页截图如下:

IMDB中Top250电影的图片

思路

  我们实现图片下载的爬虫思路如下:

  • 利用Jsoup解析网页,得到电影图片的url和name
  • 利用FileUtils.copyURLToFile()函数将图片下载到本地

准备

  在本文程序中,除了Jsoup包外,还用到了commons-io包,其下载地址为:https://mvnrepository.com/art... ,我们主要利用该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, name                 String 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文件夹,内容如下:

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

  一共下载了244张图片,用时140秒,有几张图片下载失败,效果还算OK.
  本次分享就到此结束喽,欢迎大家交流~~

脚本宝典总结

以上是脚本宝典为你收集整理的Java爬虫之下载IMDB中Top250电影的图片全部内容,希望文章能够帮你解决Java爬虫之下载IMDB中Top250电影的图片所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。