【问题标题】:Jsoup html parsing LOCJsoup html解析LOC
【发布时间】:2014-05-29 15:42:14
【问题描述】:

您好,我是 Jsoup 的新手,我找不到如何计算我正在处理的 html 度量项目的 HTML 网页中的代码行数。

任何帮助将不胜感激。

【问题讨论】:

  • 为什么youtube有9379行?当我在 chrome 中查看源代码时,我看到至少 10k
  • 每次都因页面和浏览器而异,但我只是想确保人们知道我在网站中所说的 loc 是什么意思,将其删除以避免混淆。
  • George,我认为您不需要 Jsoup 来找出 HTML 文件由多少行代码组成。事实上,我什至不认为 Jsoup 会帮助你,因为它只是将 HTML 转换为 Document 并删除对源的所有引用。不能只算换行数吗?
  • 这真的取决于你认为什么是“代码行”。我可以说将所有内容放在一行上,或者我可以在这里和那里插入换行符。我什至可以随意插入任意换行符。

标签: jsoup


【解决方案1】:

希望这可能会有所帮助。但这一切都取决于页面是如何创建的。有时它可能没有被格式化,有时它可能被混淆并可能导致不正确的计数。 但是 jsoup 提供了一定程度的格式化。所以这应该会有所帮助。

import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class LineCounter {

    public static void main(String[] args) {
        Document doc;

        try {
            doc = Jsoup.connect("http://www.stackoverflow.com").get();

            int noOfLines = doc.html().split("\n").length;
            System.out.println(noOfLines);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

【讨论】:

  • 我想这已经接近于计算 loc 我也没有找到任何其他解决方案。它不是那么准确,但它必须这样做。谢谢你的回答。
【解决方案2】:

如果您需要与原始 html 中完全相同的行数,您可以关闭 prettyPrint 设置。下面的代码将打印 html 代码中的行数。

Document doc = Jsoup.parse(html);
doc.outputSettings().prettyPrint(false);
System.out.println(doc.toString().split("\n").length);

如果你设置 prettyPrint True,jSoup 会正确格式化 html 代码,它会插入换行符,以便结束 div 标记在一个新行中,等等。因此,代码行数会增加。

【讨论】:

    猜你喜欢
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    • 2020-04-26
    • 2015-06-06
    • 2015-08-17
    • 2012-11-06
    相关资源
    最近更新 更多