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

您的代码使用最新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)加载其他内容的网站。JSOUP只能在JavaScript修改之前"查看"原始HTML。要查看原始HTML,请访问Web浏览器中的网页,然后按CTRL U(查看源)。在显示最终的HTML代码时,请勿使用调试器/firebug并无视。

评论回复:

没有您要解析的URL,很难猜测。您的浏览器可能会从不同的URL加载此网页的动态部分。您可以尝试仅解析这些HTML片段。在此处查看我的答案:如何加载HTML的整个内容-JSOUP

最新更新