Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import com.google.gson.*;
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.Statement;
- public class Main {
- public static void main(String[] args) {
- int pageNum = 0;
- String query = "https://api.hh.ru/vacancies?area=4&specialization=1&page=";
- HttpURLConnection connection = null;
- String url = "jdbc:mysql://localhost:3306/qwe?verifyServerCertificate=false&useSSL=false&characterEncoding=utf8";
- String user = "root";
- String passwd = "kargat";
- try {
- connection = (HttpURLConnection) new URL(query + Integer.toString(pageNum)).openConnection();
- connection.setRequestMethod("GET");
- connection.setUseCaches(false);
- connection.setConnectTimeout(250);
- connection.setReadTimeout(250);
- connection.connect();
- StringBuilder sb = new StringBuilder();
- int pages = 80;
- int found = 1500;
- int displayPerPage = 20;
- if (HttpURLConnection.HTTP_OK == connection.getResponseCode()) {
- BufferedReader in = new BufferedReader(
- new InputStreamReader(connection.getInputStream(), "utf8"));
- sb.append(in.readLine());
- JsonParser parser = new JsonParser();
- JsonElement jsonElement = parser.parse(sb.toString());
- JsonObject vacancies = jsonElement.getAsJsonObject();
- pages = vacancies.get("pages").getAsInt();
- found = vacancies.get("found").getAsInt();
- connection.disconnect();
- }
- System.out.print("Connecting to database.........");
- Connection dataBaseConnect = DriverManager.getConnection(url, user, passwd);
- Statement statement = dataBaseConnect.createStatement();
- System.out.println("Connected!");
- Gson gson = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
- for (int i = 0, id = 0; i < pages; i++, id += 20) {
- System.out.print("Reading page #" + Integer.toString(i) + ".........");
- connection = (HttpURLConnection) new URL(query + Integer.toString(i)).openConnection();
- connection.setRequestMethod("GET");
- connection.setUseCaches(false);
- connection.setConnectTimeout(500);
- connection.setReadTimeout(500);
- connection.connect();
- sb.setLength(0);
- if (HttpURLConnection.HTTP_OK == connection.getResponseCode()) {
- BufferedReader in = new BufferedReader(
- new InputStreamReader(connection.getInputStream(),"utf8"));
- sb.append(in.readLine());
- JsonParser parser = new JsonParser();
- JsonElement jsonElement = gson.toJsonTree(parser.parse(sb.toString()));
- JsonObject vacancies = jsonElement.getAsJsonObject();
- JsonArray vacanciesArray = vacancies.getAsJsonArray("items");
- if (i == (pages - 1)) {
- displayPerPage = found - (pages - 1) * displayPerPage;
- }
- for (int j = 0; j < displayPerPage; j++) {
- id += j;
- JsonElement vacancy = vacanciesArray.get(j);
- JsonObject vacancyObject = vacancy.getAsJsonObject();
- JsonObject employerObject = vacancyObject.getAsJsonObject("employer");
- String vacancyName = vacancyObject.get("name").getAsString();
- String employer = employerObject.get("name").getAsString();
- String date = vacancyObject.get("published_at").getAsString().substring(0, 10);
- try {
- JsonObject salary = vacancyObject.getAsJsonObject("salary");
- int money = salary.get("from").getAsInt();
- String sql = String.format("INSERT INTO vacancies (name, employer_name, date, salary)" +
- " VALUES (\"%s\", \"%s\", \"%s\", %d)",
- vacancyName.replace("\"", "'"),
- employer.replace("\"", "'"), date, money);
- statement.executeUpdate(sql);
- } catch (Throwable cause) {
- String sql = String.format("INSERT INTO vacancies (name, employer_name, date, salary)" +
- " VALUES (\"%s\", \"%s\", \"%s\", NULL)",
- vacancyName.replace("\"", "'"),
- employer.replace("\"", "'"), date);
- statement.executeUpdate(sql);
- }
- }
- } else {
- System.out.println("fail " + connection.getResponseCode() + ", " + connection.getResponseMessage());
- }
- connection.disconnect();
- System.out.println("Readed!");
- }
- dataBaseConnect.close();
- } catch (Throwable cause) {
- cause.printStackTrace();
- } finally {
- if (connection != null) {
- connection.disconnect();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement