Htmldocument Load Returns Null

本文关键字:Null Returns Load Htmldocument | 更新日期: 2023-09-27 18:11:47

此代码适用于其他网站,但当我让路时:"http://www.aedn.org/page/1"加载null。你能帮我一下吗?

        string Way = Url + PageNumber.ToString();
        HtmlWeb Source = new HtmlWeb();
        HtmlDocument Doc = Source.Load(Way);
        List<Movie> MovieList = new List<Movie>();

Htmldocument Load Returns Null

这是因为你正在使用的URL使用HTTP 302响应头重定向到另一个URL -浏览器为你做重定向,但HtmlAgilityPack不会。

随后的请求将会工作,因为响应包含一个cookie。

你可以验证这一点,例如使用Fiddler在一个新的隐身浏览器窗口

我们知道,HTML页面可能有不同的编码。所以,你可以使用c#类WebClient获取html源文件然后使用htmllagilitypack解析HTML源文件。

WebClient webClient = new WebClient();
webClient.Headers.Add(HttpRequestHeader.AcceptEncoding, "UTF-8");
byte[] b = webClient.DownloadData(url);    
MemoryStream ms = new MemoryStream(b);
HtmlDocument Doc = new HtmlDocument();
Doc.load(ms,"UTF-8");