栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

使用Java XML爬取数据

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Java XML爬取数据

使用Java XML爬取数据
  1. 定义一个常量 值为需要爬取的url地址

    // url地址
    private static final String ADDRSS = "http://www.people.com.cn/rss/politics.xml";
    
  2. 建立连接 获取读取数据对象

    	
    private static InputStream getURLConnection(String addrss) {
        // 创建一个空的输入流
        InputStream inputStream = null;
        // 判断传入的地址是否为空 为空时 没有直接返回null
        if (StringUtils.isBlank(addrss))return null;
        try {
            // 去掉两端空格 包括/n...
            URL url = new URL(addrss);
            // 打开链接
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            // 设置请求属性
            httpURLConnection.setRequestProperty("User-Agent","Nt");
            // 建立HttpURLConnection链接 -- 连接成功后会有一个响应200
            httpURLConnection.connect();
            // 判断是否连接成功
            if (httpURLConnection.getResponseCode() == 200){
                try {
                    // 连接成功后 获取读取数据的输入流
                    inputStream = httpURLConnection.getInputStream();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        } catch (MalformedURLException e) {
            System.out.println("地址转换异常!!!");
        } catch (IOException e) {
            System.out.println("打开链接异常!!!");
        }
       	// 返回读取对象
        return inputStream;`在这里插入代码片`
    }
    
  3. 读取数据

        private static StringBuilder getXMLFile(InputStream inputStream, int num) {
            // 创建一个空的StringBuilder用户保存爬虫下来的数据
            StringBuilder stringBuilder = null;
            // 判断读取文件是否为空
            if (inputStream != null){
                // 创建文档生成器工厂
                documentBuilderFactory documentBuilderFactory = documentBuilderFactory.newInstance();
                try {
                    // 创建文档生成器
                    documentBuilder documentBuilder = documentBuilderFactory.newdocumentBuilder();
                    stringBuilder = new StringBuilder();
                    // 将文件生成器转换成文档
                    document document = documentBuilder.parse(inputStream);
                    // 获取标题链表
                    NodeList titles = document.getElementsByTagName("title");
                    // 获取链接链表
                    NodeList links = document.getElementsByTagName("link");
                    System.out.println(links.getLength());
                    for (int i = 1 ,j = 1 ,tl = titles.getLength() ,ul = links.getLength();
                         i < num+2 && i < tl && j < ul && j < num+2;i++,j++) {
                        // 依次获取链表下title标签
                        Node title = titles.item(i);
                        // 依次获取链表下link标签
                        Node link = links.item(j);
                        // 依次获取title下儿子的内容
                        String titlevalue = title.getFirstChild().getNodevalue();
                        // 依次获取link下儿子的内容
                        String linkValue = link.getFirstChild().getNodevalue();
                        // 判断是否是第一个
                        if (i == 1){
                            System.out.println("==========当日 "+titlevalue+" "+linkValue+"===============");
                        }else{
                            System.out.println(titlevalue+" "+linkValue);
                        }
                        // 将数据依次附加到StringBuilder中
                        stringBuilder.append(titlevalue+" "+linkValue);
                    }
    
                } catch (ParserConfigurationException e) {
                    System.out.println("创建文档生成器异常!!!");
                } catch (SAXException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            // 返回
            return stringBuilder;
        }
    
  4. 调用

       // 传入链接地址 获取读取数据的流
       InputStream inputStream = getURLConnection(ADDRSS);
       // 传入链接地址与查询的数量 获取数据 读取xml文件中的数据
       getXMLFile(inputStream,10);
    
  5. 效果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/272174.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号