我试图在递归级别上使用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