JSoup不适用于递归级别

时间:2019-03-13 17:50:38

标签: java html jsoup

我试图在递归级别上使用jsoup选择器,该选择器返回空结果。

HTML结构

<body>
    <div>
        <div>
            <div class="classA"/>
        </div>
    </div>
</body>

Java代码

Document doc = Jsoup.connect("https://someUrl//url").get();
int size=doc.body().select(".classA").size(); // Returns 0

1 个答案:

答案 0 :(得分:1)

您的代码可以使用最新的Jsoup 1.11.3版为我工作。

Document doc = Jsoup.parse("<body> <div> <div> <div class=\"classA\"/> </div> </div> </body>");
int size = doc.body().select(".classA").size();
System.out.println(size);   // displays: 1

您的问题的可能原因:

  • 您使用的Jsoup版本较旧,介于1.9.2和1.10.3之间,因为存在一个错误,导致类仅以小写形式存储。 https://github.com/jhy/jsoup/issues/814 https://github.com/jhy/jsoup/issues/830在1.10.3版中已修复。
  • 您要解析的网站会使用JavaScript(AJAX)加载其他内容。在修改JavaScript之前,Jsoup仅能“查看”原始HTML。要查看原始HTML,请在网络浏览器中访问网页,然后按CTRL + U(查看源代码)。不要使用debugger / firebug和Inpect,因为它们会显示最终的,已修改的HTML代码。

评论回应:

如果没有要解析的URL,很难猜测。您的浏览器可能从不同的URL加载了该网页的动态部分。您可以尝试仅解析这些HTML片段。在这里检查我的答案:How to Load Entire Contents of HTML - Jsoup