• 使用jsoup进行网页内容抓取


    对网页内容的抓取比较的感兴趣,于是就简单的学习了一下,如果不使用任何的框架去抓取网页的内容,感觉有点难度,我就简单点来吧,这里所使用的jsoup框架,抓取网页的内容与使用jquery选择网页的内容差不多,上手很快。下面就简单的介绍一下吧!

    首先是获取网络资源的方法:

        /**
         * 获取网络中的超链接
         * 
         * @param urlStr
         *            传入网络地址
         * @return 返回网页中的所有的超链接信息
         */
        public String getInternet(String urlStr, String encoding) {
            URL url = null;
            URLConnection conn = null;
            String nextLine = null;
            StringBuffer sb = new StringBuffer();
            // 设置系统的代理信息
            Properties props = System.getProperties();
            props.put("proxySet", "true");
            props.put("proxyHost", "10.27.16.212");
            props.put("proxyPort", "3128");
            System.setProperties(props);
            try {
                // 获取网络资源
                url = new URL(urlStr);
                // 获取资源连接
                conn = url.openConnection();
                conn.setReadTimeout(30000);//设置30秒后超时
                conn.connect();
                BufferedReader reader = new BufferedReader(new InputStreamReader(
                        conn.getInputStream(), encoding));
                // 开始读取网页信息获取网页中的超链接信息
                while ((nextLine = reader.readLine()) != null) {
                    sb.append(nextLine);
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            }
            return sb.toString();
    
        }

    我们在获取了网络资源之后,我们就可以根据自己的需求筛选出对自己有用的资源了,下面开始抓取资源:

    public static void main(String[] args) {
            MavenTest test = new MavenTest();
            try {
    
                String html = test.getInternet(    "http://www.weather.com.cn/html/weather/101020100.shtml#7d","UTF-8");
                //将html文档转换为Document文档
                Document doc = Jsoup.parse(html);
                //获取class为.weatherYubaoBox的div的元素
                Elements tableElements = doc.select("div.weatherYubaoBox");
    //            System.out.println(tableElements.html());
                //获取所有的th元素
                Elements thElements = tableElements.select("th");
                //打印出日期的标题信息
                for (int i = 0; i < thElements.size(); i++) {
                    System.out.print("                "+thElements.get(i).text() + "	");
                }
                // 输出标题之后进行换行
                System.out.println();
                //获取表格的tbody
                Elements tbodyElements = tableElements.select("tbody");
                for (int j = 1; j < tbodyElements.size(); j++) {
                    //获取tr中的信息
                    Elements trElements = tbodyElements.get(j).select("tr");
                    for (int k = 0; k < trElements.size(); k++) {
                        //获取单元格中的信息
                        Elements tdElements = trElements.get(k).select("td");
                        //根据元素的多少判断出白天和夜晚的
                        if (tdElements.size() > 6) {
                            for (int m = 0; m < tdElements.size(); m++) {
                                System.out.print(tdElements.get(m).text() + "	");
                            }
                            // 白天的数据打印完成后进行换行
                            System.out.println();
                        }else{
                            for(int n =0; n < tdElements.size(); n++){
                                System.out.print("	"+tdElements.get(n).text());
                            }
                            //打印完成夜间的天气信息进行换行处理
                            System.out.println();
                        }
                    }
    
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }

    运行的结果如下:

    最后附上框架的地址:http://www.open-open.com/jsoup/selector-syntax.htm

  • 相关阅读:
    细说java中的类
    使用LayUI操作数据表格
    使用LayUI展示数据
    一步一步做搜索(一)
    试图加载格式不正确的程序
    自己实现spring核心功能 三
    SpringMvc请求处理流程与源码探秘
    设计模式之代理模式
    爬虫功能介绍
    爬虫监控帮助文档汇总
  • 原文地址:https://www.cnblogs.com/tangkai/p/3510689.html
Copyright © 2020-2023  润新知