Я пытаюсь выбрать информационный блок на странице входа в Google в Википедии: http://en.m.wikipedia.org/wiki/Google
Итак, я звоню:
contentDiv = document.select("div[id=content]").first();
Что работает, как ожидалось, тогда я делаю:
Elements infoboxes = contentDiv.select("table[class=infobox]");
Затем я проверяю infoboxes.isEmpty()
, и я ошеломлен, обнаружив, что он пуст!
Я проверил и убедился, что элемент contentDiv
содержит следующее:
<table class="infobox vcard" style="width: 22em;" cellspacing="5">
Итак, почему contentDiv.select("table[class=infobox]")
возвращает пустое значение?
ОБНОВЛЕНИЕ : я проверял выше с contentDiv.select("table[class=infobox vcard]")
, и он отлично работает!Это странно, так как я знаю, что в отличие от записи table.infobox.vcard
, которая выбирает только элемент точный мультикласс, table[class=infobox]
должен выбирать все таблицы, в списке которых есть как минимум infobox
классы.
Кстати, я тестировал код с другой записью в Википедии , содержащей:
<table class="infobox biota" style="text-align: left; width: 200px; font-size: 100%;">
И что contentDiv.select("table[class=infobox]")
ведет себя точно так, как ожидалось, возвращая этоЭлемент таблицы в качестве первого элемента в infoboxes
.
Есть идеи, почему несоответствие?Чем можно объяснить это странное поведение?
Возможно ли, что я только что наткнулся на ошибку Jsoup?
(я использую jsoup-1.5.2, не последнюю версию, но мне не нужна поддержка HTML5, и по разным причинам я не могу сразу перейти на последнюю версию 1.6.1).