【问题标题】:JSoup Parse text and links in sequence from html fileJSoup 从 html 文件中按顺序解析文本和链接
【发布时间】:2014-05-07 11:10:52
【问题描述】:

我正在尝试从 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 循环,但这只会打印页面的完整链接列表,有人可以帮忙吗?

【问题讨论】:

    标签: java html parsing foreach jsoup


    【解决方案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");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-12-18
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多