swen922

Aggregator (8)

Aug 7th, 2018
880
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.92 KB | None | 0 0
  1. // Aggregator (8)
  2. package com.javarush.task.task28.task2810.model;
  3.  
  4. import com.javarush.task.task28.task2810.vo.Vacancy;
  5. import org.jsoup.Jsoup;
  6. import org.jsoup.nodes.Document;
  7. import org.jsoup.nodes.Element;
  8. import org.jsoup.select.Elements;
  9.  
  10. import java.io.IOException;
  11. import java.util.ArrayList;
  12. import java.util.List;
  13.  
  14. public class HHStrategy implements Strategy {
  15.     private static final String URL_FORMAT = "http://hh.ua/search/vacancy?text=java+%s&page=%d";
  16.     //private static final String URL_FORMAT = "http://javarush.ru/testdata/big28data.html?text=java+%s&page=%d";
  17.     String ADDITIONAL_VALUE;
  18.     int PAGE_VALUE = 0;
  19.  
  20.     @Override
  21.     public List<Vacancy> getVacancies(String searchString) {
  22.  
  23.         List<Vacancy> result = new ArrayList<>();
  24.         Document document = null;
  25.         try {
  26.             document = getDocument(searchString, PAGE_VALUE);
  27.             while (true) {
  28.                 Elements elements = document.getElementsByAttributeValue("data-qa", "vacancy-serp__vacancy");
  29.                 if (elements.size() == 0) {
  30.                     PAGE_VALUE = 0;
  31.                     break;
  32.                 }
  33.                 for (Element element : elements) {
  34.                     if (element != null) {
  35.                         Vacancy vac = new Vacancy();
  36.                         vac.setTitle(element.getElementsByAttributeValueContaining("data-qa", "title").text());
  37.                         vac.setCity(element.getElementsByAttributeValueContaining("data-qa", "address").text());
  38.                         vac.setCompanyName(element.getElementsByAttributeValue("data-qa", "vacancy-serp__vacancy-employer").text());
  39.                         vac.setSiteName(URL_FORMAT);
  40.                         String urlPage = element.getElementsByAttributeValueContaining("data-qa", "title").attr("href");
  41.                         vac.setUrl(urlPage);
  42.                         String salary = element.getElementsByAttributeValueContaining("data-qa", "compensation").text();
  43.                         vac.setSalary(salary.length()==0 ? "" : salary);
  44.                         result.add(vac);
  45.  
  46.                     }
  47.                 }
  48.                 ++PAGE_VALUE;
  49.                 document = getDocument(searchString, PAGE_VALUE);
  50.             }
  51.         } catch (IOException e) {
  52.             e.printStackTrace();
  53.         }
  54.  
  55.         return result;
  56.     }
  57.  
  58.     protected Document getDocument(String searchString, int page) throws IOException {
  59.  
  60.         String myURL = String.format(URL_FORMAT, searchString, page);
  61.  
  62.         Document doc = null;
  63.         try {
  64.             doc = Jsoup.connect(myURL).
  65.                     userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.1 Safari/605.1.15").
  66.                     referrer("").
  67.                     get();
  68.         } catch (IOException e) {
  69.             e.printStackTrace();
  70.         }
  71.  
  72.         return doc;
  73.     }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment