如何提取此网页中的所有部分标题?

时间:2015-11-12 20:08:10

标签: html jsoup

使用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个)

1 个答案:

答案 0 :(得分:4)

确定使用selector的最佳方法是打印html检索到的Jsoup文档并进行检查。我自己用你的网址做了这个,发现了:

  • 在检索到的文档中, h2标记没有任何属性

但是,当我们使用Firebug检查网站时,有h2标签的属性?这是因为在网站加载期间, JavaScript 生成了属性。由于Jsoup无法抓取由Javascript生成的内容,因此它将检索网站内容"原样"纯html内容。

总结:在您的情况下,您应该使用:

Elements sectionheadings = dom.doc.select("h2");