zoukankan      html  css  js  c++  java
  • Java实现简单网页抓取

    需求说明:使用Java抓取网页信息,并以字符串的形式返回。

    使用Java代码实现:

    package net.ibuluo.spider.util;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.Reader;
    import java.net.MalformedURLException;
    import java.net.URL;
    
    /**
     * Http工具
     * @author robin zhang
     *
     */
    public class HttpUtil {
        
        /**
         * 根据网址抓取网页信息并将之以字符串的形式返回
         * @param urlStr
         *             网址字符串
         * @return
         * @throws MalformedURLException 
         */
        public static String getUrl(String urlStr) {
            
            String result = null;
            
            try{
                URL url = new URL(urlStr);
                result = inputStream2String(url.openStream());
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            
            return result;
        }
        
        
        /**
         * 读取字节流中的信息,并转为字符串
         * @param inputStream
         *             要读取的字节流
         * @return
         * @throws IOException
         */
        private static String inputStream2String(InputStream inputStream) 
                            throws IOException{
            Reader reader = null;
            StringBuilder builder = null;
            try{
                //将字节流转为字符流
                reader = new InputStreamReader(inputStream);
                //创建字符串容器
                builder = new StringBuilder();
                //设置字符流读取长度
                char[] buffer = new char[1024];
                //记录每次读取的长度,主要是为记录最后一次读取的长度
                int offset = 0;
                while((offset=reader.read(buffer)) > 0){
                    //将读取的内容转为字符串并放入builder中
                    builder.append( new String(buffer, 0, offset) );
                }
                return builder.toString();
            } catch (IOException e) {
                e.printStackTrace();
            }finally{
                if(null != reader){
                    reader.close();
                }
            }
            return null;
        }
        
        
        public static void main(String[] args){
            System.out.println( getUrl("http://www.ibuluo.net/") );
        }
    }

    以上的内容可以使用一个第三方插件JSoup实现。使用jsoup实现代码如下:

        try {
                Document doc = Jsoup.connect("http://www.baidu.com/").get();
                System.out.println(doc.html());
            } catch (IOException e) {
                e.printStackTrace();
            }

    Jsoup更多的用处是在实现html文档的分析上。可以参考Jsoup官方网站

  • 相关阅读:
    Firefox for macOS 标签关闭按钮设置在左侧
    Nginx 非编译安装 stream 模块实现四层负载均衡
    苹果手机卡死,强制关机方法
    Git安装完成,文件夹下右键菜单不出现出现Git Bash Here 和Git UI Here问题
    AESUtil
    若依框架清空select2选择
    RSAUtils
    springboot 延时任务
    Mqtt的坑,真的坑
    springboot 支付宝支付业务网页端扫码
  • 原文地址:https://www.cnblogs.com/amunote/p/4082436.html
Copyright © 2011-2022 走看看