我正在尝试使用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,但没有骰子。
感谢您的帮助!
答案 0 :(得分:1)
根据页面的标签结构(如果有的话),这可能很复杂。一个更好的选择可能是迭代所有元素,检测标题。每次检测到新标题(或者到达元素的末尾)时,都意味着新的标题。此处的所有元素都属于上一个标题(如果之前没有标题,则属于文章的"标题")。