Jsoup Проблемы с извлечением форматирования из HTML-таблиц - PullRequest
0 голосов
/ 25 ноября 2018
<tr>

<th align="LEFT" bgcolor="GREY"> <span class="smallfont">Higher-order 
Theorems</span>

</th><th bgcolor="PINK"> <em><a href="\ 
[http://www.tptp.org/CASC/J9/SystemDescriptions.html#Satallax---3.2\] 
(http://www.tptp.org/CASC/J9/SystemDescriptions.html#Satallax-- 
-3.2)">Satallax</a><br><span class="xxsmallfont">3.2</span></em>

</th><th bgcolor="SKYBLUE"> <a href="\ 
[http://www.tptp.org/CASC/J9/SystemDescriptions.html#Satallax---3.3\] 
(http://www.tptp.org/CASC/J9/SystemDescriptions.html#Satallax-- 
-3.3)">Satallax</a><br><span class="xxsmallfont">3.3</span>

</th><th bgcolor="LIME"> <a href="\ 
[http://www.tptp.org/CASC/J9/SystemDescriptions.html#Leo-III---1.3\] 
(http://www.tptp.org/CASC/J9/SystemDescriptions.html#Leo-III-- 
-1.3)">Leo‑III</a><br><span class="xxsmallfont">1.3</span>

</th><th bgcolor="YELLOW"> <a href="\ 
[http://www.tptp.org/CASC/J9/SystemDescriptions.html#LEO-II---1.7.0\] 
(http://www.tptp.org/CASC/J9/SystemDescriptions.html#LEO-II-- 
-1.7.0)">LEO‑II</a><br><span class="xxsmallfont">1.7.0</span>

</th></tr>

Итак, допустим, я хочу извлечь bgcolor, выровнять и то, что содержится в классе span.Так, например, СЕРЫЙ, ЛЕВЫЙ, Теоремы высшего порядка.

Если бы я просто хотел извлечь по крайней мере bgcolor, но в идеале все 3, как бы я это сделал?

Итак, я былпытаясь извлечь только bgcolor и

я пробовал doc.select ("tr: содержит ([bgcolor]"), doc.select (th, [bgcolor), doc.select ([bgcolor]), doc.select (tr: содержитdata (bgcolor), а также doc.select ([style]) и все они либо не вернули ничего, либо вернули ошибку синтаксического анализа. Я могу просто извлечь материал из класса span, но этобольше проблем с извлечением bgcolor и выравниванием.

1 Ответ

0 голосов
/ 26 ноября 2018

Вам просто нужно проанализировать HTML-код, который вы хотите записать в JSOUP, а затем выбрать атрибуты HTML-тегов, которые вы хотите, используя селектор attr из элементов JSOUP, и это даст вам значениеэтот атрибут для каждого тега в HTML.Чтобы получить также текст, содержащийся между тегами span, вам нужно выбрать вложенный интервал в th и получить .text () .

    Document document = Jsoup.parse(YOUT HTML GOES HERE);
    System.out.println(document);
    Elements elements = document.select("tr > th");

    for (Element element : elements) {
        String align = element.attr("align");
        String color = element.attr("bgcolor");
        String spanText = element.select("span").text();

        System.out.println("Align is " + align +
                "\nBackground Color is " + color +
                "\nSpan Text is " + spanText);
    }

. Для получения дополнительной информации не стесняйтесьспросите меня!Надеюсь, что это вам помогло!

Обновлено Ответ на комментарий:

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

String fullText = element.text();

Таким образом, вы можете получить весь текст, содержащийся между выбранными тегами Element, но вам нужно поискать в этом блоге и соответствовать желаемому запросу.Я предполагаю, что вам также нужно проверить, является ли строка пустой или нет, и выполнить отдельные запросы для каждого возможного случая, используя условные выражения IF.

Это подразумевает наличие одного для этой структуры: tr> th>span , другой для этого: tr> th> em , а другой для: tr> th .

...