Java语言自写初级爬虫一
2015-11-26 08:19
435 查看
学了好久的JAVA,C,……语言,可是不会用,东西我们也知道,这就要求我们要多看别人代码,参考,学习,模仿,创新。这是一个初级的爬虫程序,有待改进……
代码中的解释已经很详细了,不再多说。
package com.ftx.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.MalformedURLException; import java.net.URL; import java.net.URLConnection; import org.jsoup.Jsoup; import org.jsoup.helper.HttpConnection; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; /** * use java develop pa chong * * @author FTX * @version v1.0 */ public class HtmlJsoup { static URL urlObj = null; static URLConnection uc = null; static InputStreamReader in = null; public static void main(String[] args) { // 根据网址和页面编码集,获取网页源码 String html = getHtmlResourceByURL("http://www.baidu.com/", "utf-8"); // System.out.println(html); // 解析源代码 Document document = Jsoup.parse(html); // 获取网页图片 Elements elements = document.getElementsByTag("img"); for (Element element : elements) { String imgSrc = element.attr("src"); System.out.println("正在下载的图片地址" + imgSrc); downImages(imgSrc,"E:\\JavaScript"); System.out.println("download success"); } // 解析我们需要下载的内容部分 } /** * 根据一个图片的URL地址,通过这个URL批量下载图片 * * @author FTX * @param imgURL * 要下载的图片服务器地址 * @param imgesURL * 保存路径 * @return 无 */ public static void downImages(String imgURL, String filePath) { String fileName = imgURL.substring(imgURL.lastIndexOf("/")); try { File files = new File(filePath); if (files.exists()) { files.mkdirs(); } // 获取下载地址文件 urlObj = new URL(imgURL); //获取网络图片地址 HttpURLConnection uc=(HttpURLConnection)urlObj.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) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 根据网址和页面编码集,获取网页源码 * * @author FTX * @param url * @param encoding * @return String 网页源码 */ public static String getHtmlResourceByURL(String url, String encoding) { // webpage storage StringBuffer source = new StringBuffer(); try { // 获取网络连接 urlObj = new URL(url); // 打开网连接 uc = urlObj.openConnection(); // 建立网络的输入流 in = new InputStreamReader(uc.getInputStream(), encoding); // 缓冲写入的文件流 BufferedReader reader = new BufferedReader(in); // 循环读取 String tempLine = null; while ((tempLine = reader.readLine()) != null) { source.append(tempLine + "\n"); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("net connection timeOut …………"); } finally { if (in != null) try { in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return source.toString(); } }
代码中的解释已经很详细了,不再多说。
相关文章推荐
- 1.1 Spring的整体架构--Spring源码深度解析
- Hadoop2.x版本的eclipse插件问题汇总
- 第5章(5) 枚举类型
- JAVA中for的用法
- 第5章(4) 可变参数列表
- 网上书城项目总结(servlet_jsp+javaBean)
- struts2 防止重复提交请求
- java记录日志功能
- 2015年11月26日 Java基础系列(五)异常Exception
- 2015年11月26日 Java基础系列(四)class的定义,继承和实现interface
- Java 16进制、unicode互转
- 使用JAVA爬取去哪儿网入住信息
- java插入字符串
- java插入字符串
- wget jdk1.7
- 排序算法 java版本
- Rxjava
- 【leetcode】Serialize&Deserialize Binary Tree (Java)
- 数字证书简介及Java编码实现
- xml、OMElement、java对象之间转换