Ignore:
Timestamp:
01/11/25 01:23:10 (5 days ago)
Author:
Kristijan <kristijanzafirovski26@…>
Branches:
master
Children:
0a7426e
Parents:
1c51912
Message:

Added info scraping for escape travel

File:
1 edited

Legend:

Unmodified
Added
Removed
  • backend/GlobeGuru-backend/src/main/java/ScraperThread.java

    r1c51912 rcd64b06  
    9696                            } else if (optionSet.add(option)) {
    9797                                uniqueOptions.add(option);
    98                                 DatabaseUtil.saveOptionToDatabase(option);
     98                                option.setId(DatabaseUtil.saveOptionToDatabase(option));
     99                                scrapeOptionInfo(option);
    99100                                System.out.println("Parsed " + option);
    100101                            }
     
    149150
    150151             String board = roomOption.select(".rezervacija-objekt").text();
    151              if(board.length() > 2){
    152                  board = board.substring(0,2);
     152             if(board.length() > 2) {
     153                 board = board.substring(0, 2);
    153154             }
    154              if(board.isEmpty() || type.isEmpty()){
    155                  continue;
    156              }
     155             if(board.isEmpty() || type.isEmpty()) continue;
     156
    157157             Elements amenityElement = roomOption.select(".objekt-opis");
    158158             String amenity = (amenityElement != null ? amenityElement.text() : "");
     
    166166             DatabaseUtil.saveOptionDetails(option.getId(), type,board,amenity, price);
    167167         }
     168        }
     169        else if(url.contains("booking.escapetravel.mk")){
     170            System.out.println("Scraping info for " + url);
     171
     172            driver.get(url);
     173            try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } //data fetch
     174            String pageSource = driver.getPageSource();
     175            Document doc = Jsoup.parse(pageSource);
     176            Elements roomOptions = doc.select("#hotel-rooms-container .hotel-room-row");
     177            for(Element roomOption : roomOptions){
     178                String type = roomOption.select("td.align-middle").first().text();
     179                String board = roomOption.select("td.align-middle.text-primary.lead").text();
     180                if (board.isEmpty() || type.isEmpty())  continue;
     181                String priceText = roomOption.select("td.align-middle.text-end .text-success.d-block.lead").text().replace("€", "").trim();
     182                float price;
     183                if (!priceText.isEmpty()) {
     184                    price = Float.parseFloat(priceText.replace(",", ""));
     185                } else continue;
     186
     187                Elements amenityElements = doc.select("div.row > div.col-6.col-md-3.col-xl-2");
     188                StringBuilder amenities = new StringBuilder();
     189                for (Element amenityElement : amenityElements) {
     190                    amenities.append(amenityElement.text()).append(", ");
     191                }
     192                if (!amenities.isEmpty()) {
     193                    amenities.setLength(amenities.length() - 2);
     194                }
     195                System.out.println(type + board + price + amenities);
     196                DatabaseUtil.saveOptionDetails(option.getId(), type, board, amenities.toString(), price);
     197            }
     198
    168199        }
    169200    }
Note: See TracChangeset for help on using the changeset viewer.