Java开发搜索引擎爬虫
2015-10-26 21:55
507 查看
package com.peidon.html; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; /** * @author sunshine * @version 1.0 * @date:2015年8月15日 上午9:01:13 * @description: Java开发搜索引擎爬虫 * jsoup 类似jQuery的强大功能,什么方便解析操作HTML DOM 树 * 关联jar包 jsoup-1.8.3.jar */ public class HttpSoup { public static void main(String[] args) { //根据网址和页面的编码集 获取网页的源代码 String htmlResource = getHtmlResourceByUrl("http://www.ui.cn/", "UTF-8"); //System.out.println(htmlResource); //解析源代码 Document document = Jsoup.parse(htmlResource); //获取网页的图片 //网页图片标签<img src="" alt="" width="" height="" /> Elements elements = document.getElementsByTag("img"); for(Element element : elements){ String imgSrc = element.attr("src"); //System.out.println(imgSrc); downImages(imgSrc,"D:\\test\\images\\"); System.out.println("下载成功:"+imgSrc); //System.out.println(imgSrc.substring(imgSrc.lastIndexOf("/"))); } } /** * 根据一个图片的URL地址,通过这个URL批量下载图片到服务器的磁盘 * @param imageUrl 要下载的服务器地址 * @param filePath 下载完成后保存到服务器的图片地址 * */ public static void downImages(String imageUrl, String filePath){ String fileName = imageUrl.substring(imageUrl.lastIndexOf("/")); try { //创建文件的目录 File files = new File(filePath); //判断文件是否存在 if(!files.exists()){ files.mkdirs(); } //获取图片文件的下载地址 URL url = new URL(imageUrl); //连接网络图片地址 HttpURLConnection uc =(HttpURLConnection) url.openConnection(); //获取连接的输出流 InputStream is = uc.getInputStream(); //创建文件 File file = new File(filePath + fileName); //创建输出流,写入文件 FileOutputStream out = new FileOutputStream(file); int i = 0; while((i = is.read()) != -1){ out.write(i); } is.close(); out.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 根据网址和页面的编码集 获取网页的源代码 * @param url * @param encoding * @return */ public static String getHtmlResourceByUrl(String url, String encoding){ //声明一个存储网页源代码的容器 StringBuffer buff = new StringBuffer(); URL urlObj = null; URLConnection uc = null; InputStreamReader in = null; BufferedReader reader = null; try { //建立网络链接 urlObj = new URL(url); //打开网络链连接 uc = urlObj.openConnection(); //建立网络的输入流 in = new InputStreamReader(uc.getInputStream(),encoding); //缓冲写入的文件流 reader = new BufferedReader(in); String tempLine = null; //循环读取文件流 while((tempLine = reader.readLine()) != null){ buff.append(tempLine + "\n"); //循环追加数据 } } catch (Exception e) { e.printStackTrace(); System.out.println("Conection timeout ..."); } finally { if(in != null){ try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } return buff.toString(); } }
相关文章推荐
- Spring+Mybatis多数据库的配置
- Java实现智能机器自动操作电脑
- 抽象类和接口的区别[精华版]
- 【Java先进】Lock、通过使用线程池
- 线性表插入(java)
- Java中迭代器实现的原理
- Spring MVC 中的 @ResponseBody 注解的使用场合
- Java编译器——javac.exe
- Java对象类型转换的四个经验
- Java基础--正则表达式
- Java中生成帮助文档
- JAVA学习的一些笔记
- win7+mingw+opengl+eclipse
- JAVA用POI读取和创建2003和2007版本Excel完美示例
- java简单的各种进制转换
- 01-MyEclipse新建JavaWeb项目并发布到Tomcart下
- Spring 读取XML配置文件的两种方式
- JAVA-部署-摘
- 常用的mimeType,以及java获取mime类型
- Java 反射实例