如何提取标题标题,然后是维基百科的相应文本

时间:2013-08-22 03:19:17

标签: java html parsing jsoup

我正在尝试使用Jsoup来从维基百科文章中提取文本。

我的想法是简单地提取每个标题及其各自的文本段落。

我在理解如何只采用每个部分的具体文字时遇到了一些麻烦,这就是我所拥有的:

public static void main(String[] args) {

String url = "http://en.wikipedia.org/wiki/Albert_Einstein";
Document doc;

try {
    doc = Jsoup.connect(url).get();
    doc = Jsoup.parse(doc.toString());

    Elements titles = doc.select(".mw-headline");
    PrintStream out = new PrintStream(new FileOutputStream("output.txt"));
    System.setOut(out);

    for(Element h3 : doc.select(".mw-headline")) 
    {
        String title = h3.text();

        String titleID = h3.id();

        Elements paragraphs = doc.select("p#"+titleID);

        //Element  nextEle=h3.nextElementSibling();

        System.out.println(title);
        System.out.println("----------------------------------------");
        System.out.println(titleID);
        System.out.print("\n");
        System.out.println(paragraphs.text());
        System.out.print("\n");
    }

} catch (IOException e) {
    System.out.println("deu merda");
    e.printStackTrace();
}

有了这个,我可以提取每个标题,但我无法得到如何从每个部分得到相应的打印文本。我想的可能是标题的ID,但没有骰子。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

根据页面的标签结构(如果有的话),这可能很复杂。一个更好的选择可能是迭代所有元素,检测标题。每次检测到新标题(或者到达元素的末尾)时,都意味着新的标题。此处的所有元素都属于上一个标题(如果之前没有标题,则属于文章的"标题")。