可以';无法下载特定网站的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头有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,这些工具可能有助于查看请求是否至少发出。