使用 HtmlAgilityPack 解析网站不会 return 在浏览器上看到的值
Parsing web site using HtmlAgilityPack does not return values as seen on browser
解析站点时https://holfuy.com/en/weather/1284 HtmlAgilityPack returns "-" 为相关数据。
string url = "https://holfuy.com/en/weather/1284";
var web = new HtmlWeb();
web.PreRequest += request =>
{
request.CookieContainer = new System.Net.CookieContainer();
return true;
};
HtmlDocument doc = web.Load(url);
string data = doc.DocumentNode.SelectNodes("//*[@id=\"j_pressure\"]")[0].InnerText;
Console.WriteLine(data);
这背后的原因是什么?
似乎数据是动态加载到页面中的,如果您需要解析它,则需要挂钩真实的浏览器,例如通过 Selenium 并使用那里可用的驱动程序之一,或者如果您不想包含整个 Selenium直接挂钩 phantom.js 之类的无头浏览器。完成后,只需为数据呈现、加载页面和解析设置一些小的延迟。
您可以在此处查看更多信息:
Running Scripts in HtmlAgilityPack
解析站点时https://holfuy.com/en/weather/1284 HtmlAgilityPack returns "-" 为相关数据。
string url = "https://holfuy.com/en/weather/1284";
var web = new HtmlWeb();
web.PreRequest += request =>
{
request.CookieContainer = new System.Net.CookieContainer();
return true;
};
HtmlDocument doc = web.Load(url);
string data = doc.DocumentNode.SelectNodes("//*[@id=\"j_pressure\"]")[0].InnerText;
Console.WriteLine(data);
这背后的原因是什么?
似乎数据是动态加载到页面中的,如果您需要解析它,则需要挂钩真实的浏览器,例如通过 Selenium 并使用那里可用的驱动程序之一,或者如果您不想包含整个 Selenium直接挂钩 phantom.js 之类的无头浏览器。完成后,只需为数据呈现、加载页面和解析设置一些小的延迟。
您可以在此处查看更多信息: Running Scripts in HtmlAgilityPack