如何一起使用http Request和HtmlAgilityPack?

时间:2012-11-05 09:13:36

标签: c# vb.net login html-agility-pack

所以我试图登录页面并从该页面获取一些数据,但我的问题是填写这些登录信息。

我尝试了什么?在网址中发布数据。只需添加postname和值,如:http://stackoverflow.com?postLogin=myUsername&postPassword=myPassword。我用这个网址发送了一个请求。它给了我一个错误。我在浏览器上查看了网址。它似乎确实填写了用户名而不是密码文本框(我写了正确的帖子名称)。

我还看到有人建议使用HtmlAgilityPack填写数据(标记为答案)。但经过更多搜索后,单独使用HtmlAgilityPack似乎无法做到这一点。 HtmlAgilityPack适合解析html而不是填充它。所以我得出结论,我可能必须使用httpRequest和HtmlAgilityPack的组合。

我可能错了,所以如果你有更好的建议,那将有助于我自由指出正确的方向。

但如果我想这样做,我不知道如何将它们一起使用。 我首先将我的webrequest发送到登录页面以获取htmlpage。我从我的httpWebRequest获得响应,但是如何让我的Webbrowser类解析该响应,之后让我的webrequest使用用户名,密码发送帖子数据,当然还是尝试提交它?

如果您想在c#中给出答案,我想我可以自己阅读并翻译。

编辑:我刚刚使用了fiddler并获得了8个帖子。这是否意味着我已经发送了所有8个以及网址?

1 个答案:

答案 0 :(得分:1)

无需使用WebBrowser来解析HTML。您可以在HTML中查找所需的信息作为字符串,也可以使用http://htmlagilitypack.codeplex.com/之类的库来进行解析。

另外,您会发现http://www.fiddler2.com/非常有用,可以准确确定浏览器向网页发送的信息,以便您可以使用HttpWebRequest(标题,GET / POST值等)重现行为。

您还可以尝试http://www.chadsowald.com/software/fiddler-extension-request-to-code - Fiddler的扩展,自动生成模仿浏览器请求的.NET代码。