Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

HtmlUnit. Выдернуть текст из страницы


(Александр Беликов) #1

Всем привет. Только начал осваивать HtmlUnit. Имеется страница - http://www.gosuslugi.ru/pgu/stateStructure/10000375847.html#!_services
С помощью HtmlUnit эта страница парсится, получаем контент. Необходимо выдернуть из страницы конкретную информацию в виде текста:

Пробовал искать по Xpath, но на выходе получаю теги. Подскажите, как получить данную информацию из страницы?
Спасибо.


(Stan) #2

на выходе получаю теги

http://htmlunit.sourceforge.net/apidocs/com/gargoylesoftware/htmlunit/html/DomNode.html#asText()

т.е. после того как нашли элемент по xpath или еще как-то:

String text = element.asText();

(Александр Беликов) #3

Нет, я видимо неправильно выразился. На выходе получается что-то типа - “ul[@class=‘service-info’”

final HtmlPage startPage = webClient.getPage(“http://www.gosuslugi.ru/pgu/stateStructure/10000375847.html#!_services”);
List<?> list = startPage.getByXPath("//ul[@class=‘service-info’]");


(mipan) #4

выделяйте более конкретные теги и уже из них получайте текст.

Или сразу текст напрямую через xpath. Что-то типа //ul[@class=‘service-info’]/li/span/text()


(Александр Беликов) #5

@mipan Спасибо, сейчас попробую. Пока что попробовал на тэге h1.

DomNodeList<DomElement> list = startPage.getElementsByTagName("h1");
    for (DomElement domElement : list) {
      System.out.println(domElement.asText());
    }

На выходе получил:
Федеральная служба по ветеринарному и фитосанитарному надзору
Управление Федеральной службы по ветеринарному и фитосанитарному надзору по Республике Мордовия и Пензенской области

UPD: Получилось сделать след. образом (спасибо @mipan ):

List<?> list = startPage.getByXPath("//ul[@class='service-info']/li/span/text()");
    for (java.lang.Object o : list) {
      System.out.println(o.toString());
    }

Возможно есть более красивый способ.