使用 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();
}
}
我想显示列表并计算特定 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();
}
}