HtmlAgilityPack.HtmlDocument Cookies

Joj*_*ojo 5 javascript cookies dom html-agility-pack

这适用于在脚本中设置的cookie(可能在脚本标记内).

System.Windows.Forms.HtmlDocument执行这些脚本,document.cookie=etc...可以通过其Cookies属性检索cookie集(如).

我假设HtmlAgilityPack.HtmlDocument不这样做(执行).我想知道是否有一种简单的方法来模拟System.Windows.Forms.HtmlDocument功能(cookies部分).

任何人?

Osc*_*ros 3

当我需要同时使用CookieHtmlAgilityPack,或者只是创建自定义请求(例如,设置属性User-Agent等)时,我会这样做:

  • 创建一个封装请求/响应的类。我们称这个类为WebQuery
  • 在该类中有一个私有CookieCollection(在您的情况下为 public )属性
  • 在类中创建一个手动执行请求的方法。签名可以是:

...

public HtmlAgilityPack.HtmlDocument GetSource(string url);
Run Code Online (Sandbox Code Playgroud)

我们需要在这个方法中做什么?

好吧,使用HttpWebRequestHttpWebResponse手动生成 http 请求(Internet 上有几个如何执行此操作的示例),HtmlDocument使用接收流的构造函数创建类的实例。

我们必须使用什么流?好吧,返回者是:

httpResponse.GetResponseStream();
Run Code Online (Sandbox Code Playgroud)

如果您使用HttpWebRequest进行查询,您可以轻松地将CookieContainer其属性设置为您每次访问新页面之前声明的变量,这样您访问的站点设置的所有cookie都将正确存储在CookieContainer您声明的变量中在你的WebQuery中,考虑一下你只使用了该类的一个实例WebQuery

希望您觉得这个解释有用。考虑一下,使用它,您可以做任何您想做的事情,无论HtmlAgilityPack是否支持它。