2013-06-13 2 views
4

Я хочу получить список значений из HTML-документа. Я использую HTMLUnit.Получить содержимое списка элементов span с помощью HTMLUnit и XPath

Существует много элементов span с классом. Я хочу, чтобы извлечь содержимое в теги пролетных:

<span class="topic"> 
    <a href="http://website.com/page/2342" class="id-24223 topic-link J_onClick topic-info-hover">Lean Startup</a> 
</span> 

Мой код выглядит следующим образом:

List<?> topics = (List)page.getByXPath("//span[@class='topic']/text()"); 

Однако всякий раз, когда я пытаюсь пройти по списку я получаю NoSuchElementException. Может ли кто-нибудь увидеть очевидную ошибку? Также будут оценены ссылки на хорошие учебные пособия.

+0

могли бы вы добавить строку, которая приходит ошибка с? Удаление текста() из xpath и использование HtmlElement.getTextContent() - лучшее и безопасное решение. –

ответ

0

text() извлекает только текст из этого элемента, и этот пример не содержит текстового компонента, а только дочернего элемента.

Попробуйте вместо этого:

List<?> topics = (List)page.getByXPath("//span[@class='topic']"); 
1

Если вы знаете, что вы всегда будете иметь <a>, то просто добавьте его в XPath, а затем получить text() от a.

Если вы не знаете, если вы всегда будете иметь в там a, то я бы рекомендовал использовать метод .asText(), что все HtmlElement и их потомки.

Так сначала получить каждый из пролетов:

List<?> topics = (List)page.getByXPath("//span[@class='topic']"); 

И затем, в цикле, получить текст внутри каждого из пролетов:

topic.asText(); 
Смежные вопросы