1

我正在尝试使用 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,但没有骰子。

感谢您的任何帮助!

4

1 回答 1

1

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

于 2013-08-22T03:40:12.333 回答