java爬虫-简单爬取网页图片《二》
2018-01-07 21:35
295 查看
上午我们学习了一下网络爬虫的大概论述和介绍,了解了现在网络爬虫的情况和现状,此篇博文我们通过学习一个爬虫的例子来深入了解一下如何使用网络爬虫,让它更好的为我们做更多有意思的工作。
例子的目的:通过分析一个特定的url,下载该url路径下的所有图片,由于现在所学水平有限,这个例子中,没有对url循环爬取。
爬取工作主要有三步:
1、获取页面的源代码
2、解析源代码,找到源代码中图片标签
3、网络编程,下载图片
首先我们看一下项目的整体结构:
![](https://img-blog.csdn.net/20180108154426758?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM4NDM3MjQz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
例子如下:
![](https://img-blog.csdn.net/20180108154337755?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM4NDM3MjQz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20180108154350803?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM4NDM3MjQz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
接下来,我还会继续研究爬虫技术,将我的学习总结记录在博客上。欢迎大家继续访问我的下一篇博客。
例子的目的:通过分析一个特定的url,下载该url路径下的所有图片,由于现在所学水平有限,这个例子中,没有对url循环爬取。
爬取工作主要有三步:
1、获取页面的源代码
2、解析源代码,找到源代码中图片标签
3、网络编程,下载图片
首先我们看一下项目的整体结构:
例子如下:
package cn.edu.lnu.crawler; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Util { // 地址 private static final String URL = "http://www.tooopen.com/view/1439719.html"; // 获取img标签正则 private static final String IMGURL_REG = "<img.*src=(.*?)[^>]*?>"; // 获取src路径的正则 private static final String IMGSRC_REG = "[a-zA-z]+://[^\\s]*"; // 获取html内容 public static String getHTML(String srcUrl) throws Exception { URL url = new URL(srcUrl); URLConnection conn = url.openConnection(); InputStream is = conn.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line = null; StringBuffer buffer = new StringBuffer(); while ((line = br.readLine()) != null) { buffer.append(line); buffer.append("\n"); } br.close(); isr.close(); is.close(); return buffer.toString(); } // 获取image url地址 public static List<String> getImageURL(String html) { Matcher matcher = Pattern.compile(IMGURL_REG).matcher(html); List<String> list = new ArrayList<>(); while (matcher.find()) { list.add(matcher.group()); } return list; } // 获取image src地址 public static List<String> getImageSrc(List<String> listUrl) { List<String> listSrc = new ArrayList<String>(); for (String img : listUrl) { Matcher matcher = Pattern.compile(IMGSRC_REG).matcher(img); while (matcher.find()) { listSrc.add(matcher.group().substring(0, matcher.group().length() - 1)); } } return listSrc; } // 下载图片 private static void Download(List<String> listImgSrc) { try { // 开始时间 Date begindate = new Date(); for (String url : listImgSrc) { // 开始时间 Date begindate2 = new Date(); String imageName = url.substring(url.lastIndexOf("/") + 1, url.length()); URL uri = new URL(url); InputStream in = uri.openStream(); FileOutputStream fo = new FileOutputStream(new File(imageName));// 文件输出流 byte[] buf = new byte[1024]; int length = 0; System.out.println("开始下载:" + url); while ((length = in.read(buf, 0, buf.length)) != -1) { fo.write(buf, 0, length); } // 关闭流 in.close(); fo.close(); System.out.println(imageName + "下载完成"); // 结束时间 Date overdate2 = new Date(); double time = overdate2.getTime() - begindate2.getTime(); System.out.println("耗时:" + time / 1000 + "s"); } Date overdate = new Date(); double time = overdate.getTime() - begindate.getTime(); System.out.println("总耗时:" + time / 1000 + "s"); } catch (Exception e) { System.out.println("下载失败"); } } public static void main(String[] args) throws Exception { String html = getHTML(URL); List<String> listUrl = getImageURL(html); /* * for(String img : listUrl){ System.out.println(img); } */ List<String> listSrc = getImageSrc(listUrl); /* * for(String img : listSrc){ System.out.println(img); } */ Download(listSrc); } }下载的结果如下图所示:
接下来,我还会继续研究爬虫技术,将我的学习总结记录在博客上。欢迎大家继续访问我的下一篇博客。
相关文章推荐
- java爬虫-简单爬取网页图片
- java爬虫实战简单用Jsoup框架进行网页爬虫(如抓取网页图片)
- 一个简单的JAVA网页爬虫
- 一个简单java爬虫爬取网页中邮箱并保存
- Python简单爬虫,爬取网页图片
- 制作一个简单的网页爬虫爬取一张网页的特定图片
- 一个简单的JAVA网页爬虫
- java实现的简单网页爬虫:Servlet + MySQL5.5(二)
- 一个简单java爬虫爬取网页中邮箱并保存
- [Java]中的HttpClient对象实现简单的爬虫,抓取妹子图片
- Java模拟web微x登录发送文字和图片消息简单实现爬虫
- java爬虫--step1--简单网页获取
- Python3简单爬虫抓取网页图片
- 一个简单的java读取网页图片并保存图片的程序
- 简单的java爬虫抓取网页实现代码(未测试)
- 【Python3.6爬虫学习记录】(一)爬取简单的静态网页图片
- java开发一个简单的网页爬虫训练正则表达式
- JAVA 实现简单的网络爬虫,获取网站图片
- java实现的简单网页爬虫:Servlet + MySQL5.5
- 简单爬虫源码,下载指定网页所有图片