使用 c# 检查 asp 网页上的所有 css

Check all css on a web page in asp using c#

我想显示列表并计算特定 url 的 css 个文件的数量。这是我的代码:

    var document = new HtmlDocument();
    document.LoadHtml(firsturlpagesource);
    var cssTags = document.DocumentNode.SelectNodes("//link");
    if (cssTags != null)
    {
        urlcsscountlbl.Text = ""; //numbers of css
        urlcssdetailslbl.Text = ""; // url of css files
        foreach (var sitetag in cssTags)
        {
            if (sitetag.Attributes["href"] != null && sitetag.Attributes["href"].Value.Contains(".css"))
            {
                firsturlcssdetailslbl.Text += sitetag.Attributes["href"].Value + "<br />";
                int countcss = sitetag.Attributes["href"].Value.Count();
                firsturlcsscountlbl.Text = countcss.ToString();
            }
        }
    }

我得到的输出:

Total Css Files:48


  /assets/css/bootstrap.min.css
/assets/css/font-awesome.min.css
/assets/fonts/line-icons/line-icons.css
/assets/css/main.css
/assets/extras/settings.css

如您所见,只有 5 个 css 个文件,但总功能 returns 48 个。谁能帮我解决这个问题?提前致谢。抱歉我的英语不好。

问题出在这一行

sitetag.Attributes["href"].Value.Count();

此处您在 href 属性的值上调用 Count LINQ 扩展方法,该值等于 link 本身的长度(计算字符数)。相反,您应该只计算 cssTags 集合中实际 .css <Link> 元素的数量:

    var document = new HtmlDocument();
    document.LoadHtml(firsturlpagesource);
    var cssTags = document.DocumentNode.SelectNodes("//link");
    if (cssTags != null)
    {
        urlcsscountlbl.Text = ""; //numbers of css
        urlcssdetailslbl.Text = ""; // url of css files
        int count = 0;
        foreach (var sitetag in cssTags)
        {
            if (sitetag.Attributes["href"] != null && sitetag.Attributes["href"].Value.Contains(".css"))
            {
                count++;
                firsturlcssdetailslbl.Text += sitetag.Attributes["href"].Value + "<br />";                
            }
        }
        urlcsscountlbl.Text = count.ToString();
    }

每次都会重置 countcss 以及已经提到的 lionk 问题。 在循环外声明 countcss 并初始化为 0; 在循环中countcss++;

int countcss = 0;
foreach (var sitetag in cssTags)
{
    if (sitetag.Attributes["href"] != null && sitetag.Attributes["href"].Value.Contains(".css"))
    {
        firsturlcssdetailslbl.Text += sitetag.Attributes["href"].Value + "<br />";
        countcss++;
        firsturlcsscountlbl.Text = countcss.ToString();
    }
}