• Java开发搜索引擎爬虫


      1 package com.peidon.html; 
      2 
      3 import java.io.BufferedReader;
      4 import java.io.File;
      5 import java.io.FileOutputStream;
      6 import java.io.IOException;
      7 import java.io.InputStream;
      8 import java.io.InputStreamReader;
      9 import java.net.HttpURLConnection;
     10 import java.net.URL;
     11 import java.net.URLConnection;
     12 
     13 import org.jsoup.Jsoup;
     14 import org.jsoup.nodes.Document;
     15 import org.jsoup.nodes.Element;
     16 import org.jsoup.select.Elements;
     17 
     18 
     19 /** 
     20 * @author sunshine 
     21 * @version 1.0
     22 * @date:2015年8月15日 上午9:01:13 
     23 * @description: Java开发搜索引擎爬虫
     24 *     jsoup 类似jQuery的强大功能,什么方便解析操作HTML  DOM 树
     25 *     关联jar包  jsoup-1.8.3.jar
     26 */ 
     27 public class HttpSoup {
     28 
     29     public static void main(String[] args) {
     30         
     31         //根据网址和页面的编码集  获取网页的源代码
     32         String htmlResource = getHtmlResourceByUrl("http://www.ui.cn/", "UTF-8");
     33         //System.out.println(htmlResource);
     34         
     35         //解析源代码
     36         Document document = Jsoup.parse(htmlResource);
     37         
     38         //获取网页的图片
     39         //网页图片标签<img src="" alt="" width="" height="" />
     40         Elements elements = document.getElementsByTag("img");
     41         
     42         for(Element element : elements){
     43             String imgSrc = element.attr("src");
     44             //System.out.println(imgSrc);
     45             downImages(imgSrc,"D:\test\images\");
     46             System.out.println("下载成功:"+imgSrc);
     47             //System.out.println(imgSrc.substring(imgSrc.lastIndexOf("/")));
     48         }
     49     }
     50     
     51     /**
     52      * 根据一个图片的URL地址,通过这个URL批量下载图片到服务器的磁盘
     53      * @param imageUrl 要下载的服务器地址
     54      * @param filePath 下载完成后保存到服务器的图片地址
     55      * 
     56      */
     57     public static void downImages(String imageUrl, String filePath){
     58         String fileName = imageUrl.substring(imageUrl.lastIndexOf("/"));
     59         
     60         try {
     61             //创建文件的目录
     62             File files = new File(filePath);
     63             //判断文件是否存在
     64             if(!files.exists()){
     65                 files.mkdirs();
     66             }
     67             //获取图片文件的下载地址
     68             URL url = new URL(imageUrl);
     69             //连接网络图片地址
     70             HttpURLConnection uc =(HttpURLConnection) url.openConnection();
     71             //获取连接的输出流
     72             InputStream is = uc.getInputStream();
     73             
     74             //创建文件
     75             File file = new File(filePath + fileName);
     76             //创建输出流,写入文件
     77             FileOutputStream out = new FileOutputStream(file);
     78             int i = 0;
     79             while((i = is.read()) != -1){
     80                 out.write(i);
     81             }
     82             is.close();
     83             out.close();
     84         } catch (Exception e) {
     85             e.printStackTrace();
     86         } 
     87     }
     88     
     89     /**
     90      * 根据网址和页面的编码集  获取网页的源代码
     91      * @param url
     92      * @param encoding
     93      * @return
     94      */
     95     public static String getHtmlResourceByUrl(String url, String encoding){
     96         
     97         //声明一个存储网页源代码的容器
     98         StringBuffer buff = new StringBuffer();
     99         
    100         URL urlObj = null;
    101         URLConnection uc = null;
    102         InputStreamReader in = null;
    103         BufferedReader reader = null;
    104         try {
    105             //建立网络链接
    106             urlObj = new URL(url);
    107             
    108             //打开网络链连接
    109             uc = urlObj.openConnection();
    110             
    111             //建立网络的输入流
    112             in = new InputStreamReader(uc.getInputStream(),encoding);
    113             
    114             //缓冲写入的文件流
    115             reader = new BufferedReader(in);
    116             
    117             String tempLine = null;
    118             
    119             //循环读取文件流
    120             while((tempLine = reader.readLine()) != null){
    121                 buff.append(tempLine + "
    ");  //循环追加数据
    122             }
    123             
    124             
    125             
    126         } catch (Exception e) {
    127             
    128             e.printStackTrace();
    129             System.out.println("Conection timeout ...");
    130         } finally {
    131             if(in != null){
    132                 try {
    133                     in.close();
    134                 } catch (IOException e) {
    135                     e.printStackTrace();
    136                 }
    137             }
    138             
    139         }
    140         
    141         return buff.toString();
    142     }
    143 }
  • 相关阅读:
    linux操作系统及内核
    2.1.1Remove Duplicates from Sorted Arr
    顺序表
    开博篇
    ssh无法root用户登录与登录界面无法选择用户登录
    Ubuntu 18.04 Server安装GUI桌面
    Linux 命令 su 和 sudo 区别
    坑(二十六)—— mysql出现ERROR1698(28000):Access denied for user root@localhost错误解决方法
    redhat安装wps
    gitlab重置root密码
  • 原文地址:https://www.cnblogs.com/sun-rain/p/4912577.html
Copyright © 2020-2023  润新知