XPath,htmlAgilityPack和WebBrowser控件

时间:2016-06-09 21:52:28

标签: c# xpath

我可以将一个url加载到WebBrowser控件中并执行登录(基于表单),我看到我需要看到的内容。太好了,现在我想用XPath来获取我需要的数据。

不能用WebBrowser做到这一点(除非你不同意?)所以我使用敏捷包启动新会话,如下所示:

var wc = new WebClient();
wc.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0";
var doc = new HtmlAgilityPack.HtmlDocument();
doc.Load(wc.OpenRead(url), Encoding.UTF8);

var value = doc.DocumentNode.SelectSingleNode("|//li[@data-section='currentPositionsDetails']//*[@class='description']");

我的值无法检索,因为网站没有将其公开给公众(它想要登录会话)。如何将我的WebBrowser控制会话“传递”到我的WebClient()?研究一些如何发布我的登录信息的方法,这一切看起来都非常复杂。

有什么想法吗? - 谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用webBrowser1.Document.Body.OuterHtml检索正文html字符串,并使用HtmlAgilityPack加载它:

var doc = new HtmlAgilityPack.HtmlDocument();
doc.Load(new StringReader(this.webBrowser1.Document.Body.OuterHtml));

答案 1 :(得分:0)

好的,将此作为答案发布,因为它似乎在其他地方得到回答/讨论。这对像我这样的业余爱好者来说并不容易!

How to pass cookies to HtmlAgilityPack or WebClient?

HtmlAgilityPack.HtmlDocument Cookies