Advertisement
Guest User

Untitled

a guest
Oct 30th, 2017
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.60 KB | None | 0 0
  1. package com.company;
  2.  
  3. import com.google.gson.*;
  4.  
  5. import java.io.BufferedReader;
  6. import java.io.InputStreamReader;
  7. import java.net.HttpURLConnection;
  8. import java.net.URL;
  9. import java.sql.Connection;
  10. import java.sql.DriverManager;
  11. import java.sql.Statement;
  12.  
  13. public class Main {
  14.  
  15.     public static void main(String[] args) {
  16.         int pageNum = 0;
  17.         String query = "https://api.hh.ru/vacancies?area=4&specialization=1&page=";
  18.  
  19.         HttpURLConnection connection = null;
  20.         String url = "jdbc:mysql://localhost:3306/qwe?verifyServerCertificate=false&useSSL=false&characterEncoding=utf8";
  21.         String user = "root";
  22.         String passwd = "kargat";
  23.  
  24.         try {
  25.             connection = (HttpURLConnection) new URL(query + Integer.toString(pageNum)).openConnection();
  26.             connection.setRequestMethod("GET");
  27.             connection.setUseCaches(false);
  28.             connection.setConnectTimeout(250);
  29.             connection.setReadTimeout(250);
  30.             connection.connect();
  31.  
  32.             StringBuilder sb = new StringBuilder();
  33.             int pages = 80;
  34.             int found = 1500;
  35.             int displayPerPage = 20;
  36.             if (HttpURLConnection.HTTP_OK == connection.getResponseCode()) {
  37.                 BufferedReader in = new BufferedReader(
  38.                         new InputStreamReader(connection.getInputStream(), "utf8"));
  39.                 sb.append(in.readLine());
  40.  
  41.                 JsonParser parser = new JsonParser();
  42.                 JsonElement jsonElement = parser.parse(sb.toString());
  43.                 JsonObject vacancies = jsonElement.getAsJsonObject();
  44.                 pages = vacancies.get("pages").getAsInt();
  45.                 found = vacancies.get("found").getAsInt();
  46.                 connection.disconnect();
  47.             }
  48.  
  49.             System.out.print("Connecting to database.........");
  50.             Connection dataBaseConnect = DriverManager.getConnection(url, user, passwd);
  51.             Statement statement = dataBaseConnect.createStatement();
  52.             System.out.println("Connected!");
  53.  
  54.             Gson gson = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
  55.             for (int i = 0, id = 0; i < pages; i++, id += 20) {
  56.                 System.out.print("Reading page #" + Integer.toString(i) + ".........");
  57.                 connection = (HttpURLConnection) new URL(query + Integer.toString(i)).openConnection();
  58.                 connection.setRequestMethod("GET");
  59.                 connection.setUseCaches(false);
  60.                 connection.setConnectTimeout(500);
  61.                 connection.setReadTimeout(500);
  62.                 connection.connect();
  63.  
  64.                 sb.setLength(0);
  65.                 if (HttpURLConnection.HTTP_OK == connection.getResponseCode()) {
  66.                     BufferedReader in = new BufferedReader(
  67.                             new InputStreamReader(connection.getInputStream(),"utf8"));
  68.                     sb.append(in.readLine());
  69.  
  70.                     JsonParser parser = new JsonParser();
  71.                     JsonElement jsonElement = gson.toJsonTree(parser.parse(sb.toString()));
  72.                     JsonObject vacancies = jsonElement.getAsJsonObject();
  73.                     JsonArray vacanciesArray = vacancies.getAsJsonArray("items");
  74.  
  75.                     if (i == (pages - 1)) {
  76.                         displayPerPage = found - (pages - 1) * displayPerPage;
  77.                     }
  78.                     for (int j = 0; j < displayPerPage; j++) {
  79.                         id += j;
  80.                         JsonElement vacancy = vacanciesArray.get(j);
  81.  
  82.                         JsonObject vacancyObject = vacancy.getAsJsonObject();
  83.                         JsonObject employerObject = vacancyObject.getAsJsonObject("employer");
  84.  
  85.                         String vacancyName =  vacancyObject.get("name").getAsString();
  86.                         String employer = employerObject.get("name").getAsString();
  87.                         String date = vacancyObject.get("published_at").getAsString().substring(0, 10);
  88.                         try {
  89.                             JsonObject salary = vacancyObject.getAsJsonObject("salary");
  90.                             int money = salary.get("from").getAsInt();
  91.                             String sql = String.format("INSERT INTO vacancies (name, employer_name, date, salary)" +
  92.                                             " VALUES (\"%s\", \"%s\", \"%s\", %d)",
  93.                                     vacancyName.replace("\"", "'"),
  94.                                     employer.replace("\"", "'"), date, money);
  95.                             statement.executeUpdate(sql);
  96.                         } catch (Throwable cause) {
  97.                             String sql = String.format("INSERT INTO vacancies (name, employer_name, date, salary)" +
  98.                                             " VALUES (\"%s\", \"%s\", \"%s\", NULL)",
  99.                                     vacancyName.replace("\"", "'"),
  100.                                     employer.replace("\"", "'"), date);
  101.                             statement.executeUpdate(sql);
  102.                         }
  103.                     }
  104.                 } else {
  105.                     System.out.println("fail " + connection.getResponseCode() + ", " + connection.getResponseMessage());
  106.                 }
  107.                 connection.disconnect();
  108.                 System.out.println("Readed!");
  109.             }
  110.             dataBaseConnect.close();
  111.         } catch (Throwable cause) {
  112.             cause.printStackTrace();
  113.         } finally {
  114.             if (connection != null) {
  115.                 connection.disconnect();
  116.             }
  117.         }
  118.     }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement