如何使用 Html Agility Pack 的实际源代码获取 javascript 代码

how to get javascript code too with the actual source with Html Agility Pack

我正在使用 Html 敏捷包获取网站的源代码,这与我使用 firebug.i 检查时的代码不同已经搜索了很多东西,但仍然不清楚我应该做什么 do.Source 与我检查时的代码不同,请告诉我如何使用 Html 获得 javascript 代码。即使我在浏览器中禁用 javascript,我仍然无法从源代码中获取 Javascript 代码。我正在使用

string url="";
HtmlDocument doc = new HtmlDocument();
                WebClient client = new WebClient();
                html = client.DownloadString(url);
                doc.LoadHtml(html);

要获取源代码,请告诉我是否也需要请求和响应方法来获取 JS 代码。

为此,您需要一个真正的浏览器。考虑自动化浏览器(可以是无头的 - 请参阅 PhantomJS) with the help of selenium.

另请参阅:

  • Running Scripts in HtmlAgilityPack

要扩展 @alecxe 答案,您可以像真正的浏览器一样使用 Selenium* 加载目标页面,然后将结果传递给 HtmlAgilityPack 进行进一步处理:

using OpenQA.Selenium;

.....

IWebDriver driver = new PhantomJS.PhantomJSDriver();
driver.Navigate().GoToUrl(url);
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(driver.PageSource);

或者,您可以直接使用 Selenium 运行 您的查询(XPath 或 CSS 选择器),例如:

var result = driver.FindElements(By.XPath("your query"));

//print HTML of the returned elements
foreach (var item in result)
{
    Console.WriteLine(item.GetAttribute("outerHTML"));
}

*) 需要先下载 Selenium,以及驱动程序,即 PhantomJS、Firefox 等。Selenium 可以从 NuGet.

轻松安装到您的项目中