JSoup: извлечение одного слова из тега класса - PullRequest
2 голосов
/ 04 декабря 2011

Я использую JSoup в течение последних нескольких недель, чтобы успешно очистить данные с веб-страницы; однако я зашел в тупик, пытаясь найти способ извлечь только одно слово из тега класса вместо всего текста.

Вот код Java, который я использую:

// store all the search results in the elmAllSearchResults element
Element elmAllSearchResults = doc.getElementById("SearchResults"); 
// extract the detDesc class from elmAllSearchResults
Elements elmSize = elmAllSearchResults.getElementsByClass("desc");

Чтобы извлечь несколько строк, похожих на это:

<font class="desc">Date 11-04; 09:21, Size 8100.00 MB, User <a class="desc" href="/member/aUser/" title="Browse">
<font class="desc">Date 12-04; 09:21, Size 62 MB, User <a class="desc" href="/member/bUser/" title="Browse">

Но теперь все, что я хочу сделать, это извлечь размер (8100,00 МБ, и 62 МБ в данном случае) из этой строки текста. Поскольку размер не легко определить, заключив его в какие-либо теги, я не могу найти способ его получить.

Возможно ли это?

Спасибо.

1 Ответ

1 голос
/ 04 декабря 2011

Jsoup идет только до тех пор, пока не достигнет отдельных элементов HTML. Если вы хотите проанализировать их текстовые тела, которые, по сути, String s, вам нужно вместо этого взять String основанные методы , такие как substring(), indexOf(), replaceAll(), и т.д.

Например, если вы можете гарантировать, что желаемая информация всегда находится между ", Size " и ", User", тогда вам следует подстать String для этого:

String before = ", Size ";
String after = ", User";

for (Element element : elements) {
    String text = element.text();
    String size = text.substring(text.indexOf(before) + before.length(), text.indexOf(after));
    // ...
}
...