JSoup按顺序从html文件中解析文本和链接

时间:2014-05-07 11:10:52

标签: java html parsing foreach jsoup

我正在尝试从html文件中提取文本和链接。目前我可以使用JSoup轻松提取,但我只能单独进行。

这是我的代码:

try {
          doc = (Document) Jsoup.parse(new File(input), "UTF-8");
          Elements paragraphs = ((Element) doc).select("td.text");

          for(Element p : paragraphs){
           // System.out.println(p.text()+ "\r\n" + "***********************************************************" + "\r\n");
            getGui().setTextVers(p.text()+ "\r\n" + "***********************************************************" + "\r\n");

          }
          Elements links = doc.getElementsByTag("a");
          for (Element link : links) {
            String linkHref = link.attr("href");
            String linkText = link.text();
            getGui().setTextVers("\n\n"+link.text() + ">\r\n" +linkHref + "\r\n");
          }
}

我在最外面的td放了一个.text类,里面有文本。我想要实现的是:当程序找到一个带有.text类的td时,它会检查它是否有任何链接并按顺序从该部分中提取它们。所以你会:

文字

链接

文字

链接

我尝试将每个循环的内部放入第一个foreach循环,但这只打印了页面的完整链接列表,任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

尝试

Document doc = (Document) Jsoup.parse(new File(input), "UTF-8");
Elements paragraphs = ((Element) doc).select("td.text");

for (Element p : paragraphs) {
    System.out.println(p.text());
    Elements links =  p.getElementsByTag("a");
    for (Element link : links) {
        String linkHref = link.attr("href");
        String linkText = link.text();
        System.out.println("\n\n" + linkText + ">\r\n" + linkHref + "\r\n");
    }
}