【问题标题】:How to calculate total size of a page with additional files and scripts如何使用附加文件和脚本计算页面的总大小
【发布时间】:2012-07-21 19:21:30
【问题描述】:

我想问一下是否可以在 C# 中以编程方式获取特定的网站内容大小。我的意思是:网站的完整大小,包括头部或正文中引用的所有图像和脚本等。例如,如果我们有一个站点http://www.google.com,我想获取它的总大小,包括徽标、引用的脚本等,因为它将呈现给用户,而不仅仅是主页。

这是我的意思:(点击查看完整尺寸)

如果我们在 IE 9 中使用 IE Developer tool,并开始捕获网络会话上的流量,然后我们点击 google.com,它会显示加载的文件总数(.js、.png 等)和时间以毫秒为单位加载。

我尝试使用 webrequest 做类似的事情,但我只得到 43kb 而不是 IE 开发工具得到的 101。

代码如下:

WebRequest request = WebRequest.Create(textBox2.Text.ToString());     
request.Credentials = CredentialCache.DefaultCredentials;           
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();      
StreamReader reader = new StreamReader(dataStream);          
string responseFromServer = reader.ReadToEnd();         
byte[] bytes = Encoding.ASCII.GetBytes(responseFromServer);
MessageBox.Show(ConvertSize(responseFromServer.Length) + "  -  " + responseFromServer.Length.ToString());
reader.Close();
dataStream.Close();
response.Close();

如何获取网站的总大小,包括该特定页面中使用/引用的所有图像、js 和其他文件?非常感谢!

【问题讨论】:

  • 我猜谷歌可能会根据它认为你可以处理的内容提供不同的内容。当我查看谷歌主页的来源(在 FF 上)并进行字符计数时,它的字符数刚刚超过 100k,这比 IE 告诉你的要高一点。我猜您的 WebRequest 方法确实获得了 43k 的文件。使用适当的浏览器模拟(即设置用户代理等)再试一次,看看您是否得到不同大小的文件...当然,谷歌确实会向您显示与未登录相比不同的内容...

标签: c# asp.net


【解决方案1】:

您的 WebRequest 只是获取 HTML。它不会解析以获取任何引用的文件(图像、CSS、javascript 包括等)。 WebBrowser 控件等控件可以让您自动化浏览器

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-05-15
  • 1970-01-01
  • 2011-08-21
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多