我已将代码简化为以下方法:
[TestMethod]
public void ViaplayCrawl()
{
var getWeb = new HtmlWeb();
var documentUrl = getWeb.Load("http://viaplay.dk/");
var someVar = documentUrl.DocumentNode.SelectNodes("//body").Count;
}
此方法适用于我尝试过的所有其他网页,但似乎未能通过" viaplay.dk"
当我为someVar赋值时,我得到一个NullReferenceException。
任何人都有一个想法如何使用htmlagilitypackage抓取viaplay.dk?
答案 0 :(得分:1)
网站不会返回content-type
标头,这是HtmlWeb
类忽略结果的提示。
这是负责的方法:
HtmlAgilityPack.dll!HtmlAgilityPack.HtmlWeb.Get(System.Uri uri,string method,string path,HtmlAgilityPack.HtmlDocument doc,System.Net.IWebProxy proxy,System.Net.ICredentials creds)第216行C#
如果您使用HttpClient
课程并将内容提供给应该有效的Document.LoadHtml
课程。或者要求网站所有者返回正确的标题。
HttpClient client = new HttpClient();
var result = client.GetStringAsync("http://viaplay.dk/").Result;
var doc = new HtmlDocument();
doc.LoadHtml(result);
var someVar = doc.DocumentNode.SelectNodes("//body").Count;