【发布时间】: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 的文件。使用适当的浏览器模拟(即设置用户代理等)再试一次,看看您是否得到不同大小的文件...当然,谷歌确实会向您显示与未登录相比不同的内容...