【问题标题】:Preserving lines with Jsoup使用 Jsoup 保留行
【发布时间】:2011-11-27 21:41:34
【问题描述】:

我正在使用 Jsoup 从 html 中获取一些数据,我有这个代码:

System.out.println("nie jest");
StringBuffer url=new StringBuffer("http://www.darklyrics.com/lyrics/");
url.append(args[0]);
url.append("/");
url.append(args[1]);
url.append(".html");

//wyciaganie odpowiednich klas z naszego htmla
Document doc=Jsoup.connect(url.toString()).get();
Element lyrics=doc.getElementsByClass("lyrics").first();
Element tracks=doc.getElementsByClass("albumlyrics").first();

//Jso
//lista sciezek
int numberOfTracks=tracks.getElementsByTag("a").size();

一切都会好的,我提取我想要的数据,但是当我这样做时:

lyrics.text()

我得到的文本没有换行符,所以我想知道如何在显示的文本中留下换行符,我在 stackoverflow 上阅读了关于这个问题的其他线程,但它们没有帮助,我试图做这样的事情:

TextNode tex=TextNode.createFromEncoded(lyrics.text(), lyrics.baseUri());

但我无法通过换行符获得所需的文本。我看了以前的关于这个的帖子, Removing HTML entities while preserving line breaks with JSoup 但我无法得到我想要的效果。我该怎么办?

编辑:我得到了我想要的效果,但我认为这不是很好的解决方案:

for (Node nn:listOfNodes)
            {
                String s=Jsoup.parse(nn.toString()).text();
                if ((nn.nodeName()=="#text" || nn.nodeName()=="h3"))
                {
                    buf.append(s+"\n");

                }
            }

谁有更好的主意?

【问题讨论】:

    标签: java html-parsing jsoup


    【解决方案1】:

    您可以通过检查节点是否为TextNode 的实例来获取文本节点(<br />s 之间的文本)。这应该适合你:

    Document document = Jsoup.connect(url.toString()).get();
    Element lyrics = document.select(".lyrics").first();
    StringWriter buffer = new StringWriter();
    PrintWriter writer = new PrintWriter(buffer);
    
    for (Node node : lyrics.childNodes()) {
        if (node.nodeName().equals("h3")) {
            writer.println(((Element) node).text());
        } else if (node instanceof TextNode) {
            writer.println(((TextNode) node).text());
        }
    }
    
    System.out.println(buffer.toString());
    

    (请注意,比较对象的内部值应该使用equals() 方法,而不是==;字符串是对象,而不是原语)

    哦,我也建议阅读他们的privacy policy

    【讨论】:

    • 好的,它有效,谢谢,我会看看这些政策。
    猜你喜欢
    • 2014-02-05
    • 2012-12-08
    • 2016-08-13
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    相关资源
    最近更新 更多