Простите за вопрос новичка.Я пытаюсь построить веб-скребок.Я создал вспомогательный класс Selectors
для хранения селекторов CSS другого типа, и у класса есть метод getter, который возвращает необязательное значение поля:
public Optional<String> getName() {
return Optional.ofNullable(this.name);
}
В моем основном Scrapper
классе у меня есть метод дляизвлеките имя из HTML, используя объект Selectors
, подобный следующему:
public String extractName(Element building) {
if (this.selectors.getName().isPresent()) {
String cssSelector = this.selectors.getName().get();
Elements buildingNameElement = building.select(cssSelector);
return buildingNameElement.text();
}
return "N/A";
}
Насколько я читал, это не очень хороший способ использовать класс Optional
.Но я изо всех сил пытаюсь найти лучшее решение.Моей первой мыслью было использование метода ifPresent
, но он не работает таким образом:
public String extractName(Element building) {
this.selectors.getName().ifPresent(() -> {
String cssSelector = this.selectors.getName().get();
Elements buildingNameElement = building.select(cssSelector);
return buildingNameElement.text();
});
return "N/A";
}
Я бы хотел, чтобы Elements.select()
выполнялся только в том случае, если в поле * присутствует поле имени1016 * объект.Может ли кто-нибудь помочь мне сделать код более функциональным?
Спасибо!