使用JSoup,我一直在尝试选择所有h2节标题节点(进入Elements
列表):
Elements sectionheadings = dom.doc.select("h2[class=section-heading collapsible-heading open-block]");
在这个维基百科页面中:
https://en.m.wikipedia.org/wiki/Banana_cake
但是,结果始终是一个空列表。
我知道它不是空的,因为我可以使用Firebug查看它。它甚至提供了这种标题的确切完整路径:
html.client-JS body.mediawiki.ltr.sitedir-ltr.stable.skin-minerva.action-view.animations div#mw-mf-viewport div#mw-mf-page-center div #content DIV#bodyContent.content.mw化内容LTR h2.section-heading.collapsible-heading.open块
我做错了什么?
选择所有这些h2标题的正确JSoup语法是什么? (我可以看到其中至少有4个)
答案 0 :(得分:4)
确定使用selector
的最佳方法是打印html
检索到的Jsoup
文档并进行检查。我自己用你的网址做了这个,发现了:
但是,当我们使用Firebug检查网站时,有h2
标签的属性?这是因为在网站加载期间, JavaScript 生成了属性。由于Jsoup
无法抓取由Javascript生成的内容,因此它将检索网站内容"原样"纯html
内容。
总结:在您的情况下,您应该使用:
Elements sectionheadings = dom.doc.select("h2");