如何从网页中下载图片
如果做为爬虫很有必要从网页中下载图片到本地,那么我们利用jsoup来进行该操作,jsoup 是一个很不错的html解析器。下面是它的简介:
jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。
jsoup的主要功能如下:
- 从一个URL,文件或字符串中解析HTML;
- 使用DOM或CSS选择器来查找、取出数据;
- 可操作HTML元素、属性、文本;
jsoup是基于MIT协议发布的,可放心使用于商业项目。
网页中下载图片需要这么两步操作
1.获取绝对路径
很多网页中用的是相对路径,因此获取图片的绝对路径很重要
方法一:我们就利用jsoup来获取
1 | Element image = document.select( "img" ).first(); |
2 | String url = image.absUrl( "src" ); |
3 | // url = http://www.example.com/images/chicken.jpg |
或者
01 | String url = image.attr( "abs:src" ); |
02 | 他们的前提利用connect方式获取而不是文件方式 |
03 | Document doc = Jsoup.connect( "http://jsoup.org" ).get(); |
04 | Element link = doc.select( "a" ).first(); |
05 | String relHref = link.attr( "href" ); // == "/" |
06 | String absHref = link.attr( "abs:href" ); // "http://jsoup.org/" |
07 | 方法二:利用jdk中url |
08 | URL url = new URL( "http://www.example.com/index.html" ); |
09 | URI uri = url.toURI(); |
10 | System.out.println(uri.resolve( "images/chicken.jpg" ).toString()); |
2.第二步则就是下载图片
01 | URL url = new URL( "图片地址" ); |
02 | URLConnection uc = url.openConnection(); |
03 | InputStream is = uc.getInputStream(); |
04 | File file = new File( "本地路径 " ); |
05 | FileOutputStream out = new FileOutputStream(file); |
06 | int i= 0 ; |
07 | while ((i=is.read())!=- 1 ) { |
08 | out.write(i); |
09 | } |
10 | is.close(); |
本站翻译的:jsoup的官方教程