자바 파충류 노트

2295 단어 Java
오늘 의 목 표 는 OJ 를 배 워 서 백 스테이지 데 이 터 를 얻 고 링크 의 인 터 페 이 스 를 얻 는 것 입 니 다.제목 번호 와 조작 코드 를 수정 하면 데 이 터 를 다운로드 할 수 있 지만 계 정 에 로그 인 해 야 하 는 Cookie 입 니 다.
그래서 HttpClient 로 네트워크 요청 을 보 내 고 파일 을 다운로드 하 는 것 을 기록 합 니 다.
public static void doPostWithParam(String postUrl, Map params,Mapheaders, String saveDir, String fileName) throws Exception{
        CloseableHttpClient httpClient = HttpClients.createDefault();

        HttpPost post = new HttpPost(postUrl);

        List list = new ArrayList<>();

        /**
         *    params
         */
        params.forEach((key,value) -> {
            list.add(new BasicNameValuePair(key,value));
        });
        StringEntity entity = new UrlEncodedFormEntity(list,"utf-8");
        post.setEntity(entity);

        /**
         *    Headers
         */
        headers.forEach((key,value) -> {
            post.addHeader(key,value);
        });

        CloseableHttpResponse response =httpClient.execute(post);

        String string = EntityUtils.toString(response.getEntity());


        try {
            File file = new File(saveDir);
            if(!file.exists()){
                file.mkdirs();
            }
            file = new File(saveDir + fileName);
            FileWriter fw = new FileWriter(file);
            if(!file.exists()){
                file.createNewFile();
            }
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write(string);
            bw.close();
            fw.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        response.close();

        httpClient.close();
    }

 
위의 도 구 는 url,params 의 map,headers 의 map 에 들 어가 파일 경 로 를 저장 하고 파일 이름 을 저장 합 니 다.
 
Map params = new HashMap<>();
Mapheaders = new HashMap<>();
headers.put("Cookie","...");
try {
  doPostWithParam("https://oj.bnuz.edu.cn:8081/problem/" + sources[i][2],params,headers,"E:/JAVA/Java_Work_Idea/Spider/src/data/" + id + "/",id + ".html");
} catch (Exception e) {
  e.printStackTrace();
}

좋은 웹페이지 즐겨찾기