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

Java文件爬取

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

Java文件爬取

 直接上代码:

//@SpringBootTest
class DemoApplicationTests {

    @Test
    void contextLoads() throws IOException {
        RestTemplate restTemplate = new RestTemplate();//获取请求
        ObjectMapper mapper = new ObjectMapper();//json格式转换
        for (int i = 1; i <= 20271; i++) {//爬取页数循环

            String forObject = restTemplate.getForObject("https:///?page="+i+"&size=100", String.class);//获取url请求的数据
            System.out.println(forObject);

            Map map = mapper.readValue(forObject, Map.class);//将Json字符串转为Map对象
            Map result = (Map) map.get("result");//获取map中的result
            List> data = (List>) result.get("data");//获取result中的data
            for (Map datum : data) {//对数据Data进行遍历获取数据()
                JSONObject jsonObject = new JSONObject();//创建jSON对象
                jsonObject.put("id", datum.get("id"));//存id部分的数据
                MultiValueMap requestData = new LinkedMultiValueMap<>();
                requestData.add("id", datum.get("id").toString());
                HttpEntity> request = new HttpEntity<>(requestData, null);
                String s1 = restTemplate.postForObject("https://", request, String.class);根据爬取的数据选择文件爬取方式
                Map map1 = mapper.readValue(s1, Map.class);
                System.out.println(map1);
                Map result1 = (Map) map1.get("result");
                List> body = (List>) result1.get("body");
                if (body.get(0).get("path")!=null){//对需要下载的地址路径进行拼接
                    String url = "https://wb.flk.npc.gov.cn/" + body.get(0).get("path");
                    System.out.println(url);
                    Object title = result1.get("title");
                    byte[] file = restTemplate.getForObject(url, byte[].class);//请求下载//路径,并得到字节流对象
                    String path1 = body.get(0).get("path").toString();//如果提供多种格式的下载,那么取其中一种格式进行下载即可
                    System.out.println(path1);
                    String productZipName = path1.substring(path1.lastIndexOf("/"));
                    String type = productZipName.substring(productZipName.lastIndexOf("."));
                    File f = new File("E:\fl\" + title + type);//将文件按字节流的方式写到//指定存盘中,可以在爬取的数据中获取到文件的title名称作为保存的文件名
                    FileOutputStream out = new FileOutputStream(f);
                    out.write(file);
                    out.close();
                }

            }
        }

    }

}

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

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

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