可以';无法下载特定网站的HTML

本文关键字:网站 HTML 下载 可以 | 更新日期: 2023-09-27 18:20:56

我正在使用C#控制台应用程序进行Web解析。

我的代码是:

var req = WebRequest.Create("http://watch.squidtv.net/");
req.BeginGetResponse(r =>
{
     var response = req.EndGetResponse(r);
     var stream = response.GetResponseStream();
     var reader = new StreamReader(stream, true);
     var str = reader.ReadToEnd();
     Console.WriteLine(str);
}, null);

此代码与其他URL一起运行良好,但当我将URL更改为http://watch.squidtv.net/然后出现了两个问题-

第一个-它没有下载它的html
第二个-它会产生CPU的声音。

然后我更改了代码并使用了类似的webClient-

string htmlCode = "";
htmlCode = client.DownloadString("http://watch.squidtv.net");
Console.WriteLine(htmlCode);

但问题是一样的:(
可能是什么问题???

可以';无法下载特定网站的HTML

我找到了解决方案问题是HTML头中的HTML头有gzip对象编码httpwebrequest不接受gzip头,这导致了问题,当我使用此代码时,问题解决了

   HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://watch.squidtv.net/");
        req.Headers[HttpRequestHeader.AcceptEncoding] = "gzip, deflate";
        req.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
        req.Method = "GET";
        req.UserAgent = "Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))";
        string htmlCode;
        using (StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream()))
        {
            htmlCode = reader.ReadToEnd();
        }

您可能需要在WebRequest中指定更多内容,以便SquidTV服务器能够知道将HTML发送回您的想法。

考虑一下,在浏览器中,有很多头被发送到服务器。如果您想查看,请使用Fiddler或WireShark查看发送的所有额外数据。

防火墙可能是另一个问题,因为您发送的请求可能不被允许,因此没有任何结果。这将是我可能会建议的中间工具,如WireShark或Fiddler,这些工具可能有助于查看请求是否至少发出。