2016-04-20 2 views
1

Я пытаюсь получить некоторые данные веб-страницы с JSoup в Java. Для этого я использую смесь JSoup и парсер JSON.Можно ли идентифицировать нулевые ссылки с помощью JSoup?

Предположим, что на веб-странице есть много элементов с одинаковым именем класса внутри другого элемента с его соответственно именем класса также, например:

<div class="foo"> 
    <span class="bar">Whatever</span> 
</div> 

и я извлечения данных внутри bar класса всех элементы, как это:

Elements elements = Jsoup 
        .parse(html) 
        .body().select(".foo .bar"); 

Проблема, приходит, потому что есть некоторые дивы, которые не имеют span тег внутри так, когда я получить полный набор элементов, что веб-страницы, элементы Tha t не существует, они не добавлены (это имеет смысл, но мне нужно обнаружить эти элементы).

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

1. foo 
2. null 
3. bar 

будет сохранено только первое и третье данные положения, а третье положение будет вторым.

Можно ли идентифицировать нулевые ссылки с помощью JSoup?

Заранее благодарен!

ответ

1

Jsoup выбирает возврат только существующих элементов. Чтобы обнаружить недостающие элементы можно запросить верхний селектор первым и итерацию по отношению к результатам, чтобы проверить, если верхний элемент содержит необходимый ребенку:

Elements fooElements = Jsoup 
       .parse(html) 
       .body().select(".foo"); 

Elements elements = new Elements() 
for(Element el : fooElements) { 
    elements.add(el.select(".bar").first()); 
} 

В приведенном выше примере elements будет содержать как пролеты с foo класса и нулями.

+1

Большое спасибо! Он работает отлично. Я исправил ошибку в цикле for, вы должны использовать ':' вместо 'in'. Happy codding :) –

+0

Да, спасибо за исправление, я не скомпилировал код, он становится странным, когда у вас так много вариантов цикла для разных языков, которые вы кодируете – Entea

Смежные вопросы