这与脚本内(可能在脚本标签内)设置的cookie有关。
System.Windows.Forms.HtmlDocument
执行这些脚本和cookies集(比如document.cookie=etc...
)可以通过其检索Cookies财产。
我假设HtmlAgilityPack.HtmlDocument
不执行此操作(执行)。我想知道是否有一种简单的方法可以模拟System.Windows.Forms.HtmlDocument
功能(cookie 部分)。
Anyone?
当我需要使用时Cookies and Html敏捷包一起,或者只是创建自定义请求(例如,设置User-Agent
财产等),这就是我所做的:
- 创建一个封装请求/响应的类。我们称这个类为
WebQuery
- 拥有私人Cookie集合(在你的情况下public) 该类内的属性
- 在类中创建一个手动执行请求的方法。签名可以是:
...
public HtmlAgilityPack.HtmlDocument GetSource(string url);
我们需要在这个方法中做什么?
嗯,使用HttpWeb请求 and HttpWeb响应,手动生成http请求(互联网上有几个如何执行此操作的示例),创建一个实例HtmlDocument
使用接收流的构造函数的类。
我们必须使用什么流?好吧,返回者是:
httpResponse.GetResponseStream();
如果你使用HttpWeb请求要进行查询,您可以轻松设置CookieContainer
每次访问新页面时,将其属性传递给您之前声明的变量,这样您访问的网站设置的所有 cookie 将正确存储在CookieContainer
您在中声明的变量WebQuery
class,考虑到您只使用了一个实例WebQuery
class.
希望您觉得这个解释有用。考虑一下,使用这个,你可以做任何你想做的事,无论Html敏捷包支持与否。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)