【问题标题】:Omit images from webpage requested through HttpWebRequest省略通过 HttpWebRequest 请求的网页中的图像
【发布时间】:2012-11-28 18:45:27
【问题描述】:

我获取网页是为了向我的应用程序提供数据。但是,这些页面包含很多我根本不需要的图像。我只需要文本数据。 我的问题是网络请求花费了不可接受的时间。我认为图像也是在网络请求期间获取的。有没有办法消除图像并只下载文本数据?

以下是我目前正在使用的代码。

        var httpWebRequest = HttpWebRequest.Create(url) as HttpWebRequest;
        httpWebRequest.Method = "GET";
        httpWebRequest.ProtocolVersion = HttpVersion.Version11;
        httpWebRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
        httpWebRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
        httpWebRequest.Proxy = null;
        httpWebRequest.KeepAlive = true;
        httpWebRequest.Accept = "text/html";

        string responseString = null;
        var httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse;

        using (var responseStream = httpWebResponse.GetResponseStream())
        {
            using (var streamReader = new StreamReader(responseStream))
            {
                responseString = streamReader.ReadToEnd();
            }
        }

此外,欢迎提出任何其他优化建议。

【问题讨论】:

  • Is there any way to eliminate the images and download only the text data? 你已经只下载了纯 html 而不是图片。
  • @L.B - 好的。那么是不是没有进一步优化的空间了?
  • 优化速度,代码?。例如,如果您使用WebClient,您可以用两行编写代码。 (当然,WebClient 在功能方面是 HttpWebRequest 的子集)
  • @L.B - 哦,是的!一个小时前我开始了解 WebClient 并阅读了它。我将用 WebClient 替换现有代码,因为我似乎没有使用 HttpWebRequest 提供的额外控制功能。我要问的是速度优化。

标签: c# .net http-headers httpwebrequest


【解决方案1】:

这是不正确的。
HttpWebRequest 对 HTML 或图像一无所知;它只是发送原始 HTTP 请求。

您可以使用Fiddler 来查看到底发生了什么。

【讨论】:

  • 你的意思是无论我做什么都会获取图像吗?我的意思是我的代码可能是错误的,但是有没有办法只获取文本而不获取图像?
  • @MrBhoot、图像、css 文件、js 文件等在 html 中通过指向单独资源(src=...等)的链接进行引用。在幕后,浏览器会读取一个 html 文件,当它遇到图像链接时,它会针对这些文件发出单独的请求。除非您在遇到 时发出单独的下载图像请求,否则 WebRequest 只是拉下所请求 url 的文本。
  • @JayWalker - 好的。我明白了。我也可以在 Fiddler 中看到这种情况,我从中发出了一个 Web 请求。图像(和其他文件)是通过单独的请求获取的。我想我将不得不退后一步并做一些阅读。无论如何,谢谢。
  • Firebug (getfirebug.com/downloads) 是另一个类似 fiddler 的工具。它有一个很好的界面,显示请求持续时间(时间线)。这可以帮助您确定发送方的带宽/延迟是否存在问题。
  • @JayWalker:但是对于非浏览器的请求是没用的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2019-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多