【问题标题】:How to use httpRequest and HtmlAgilityPack together?如何一起使用 httpRequest 和 HtmlAgilityPack?
【发布时间】:2012-11-05 09:13:35
【问题描述】:

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

我尝试了什么? 在 url 中发布数据。通过简单地添加 postname 和值,如下所示:http://stackoverflow.com?postLogin=myUsername&postPassword=myPassword。我用这个网址发送了一个请求。它给了我一个错误。我在浏览器上查看了网址。似乎它确实填写了用户名但没有填写密码文本框(我写了正确的帖子名)。

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

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

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

如果你想用 c# 给出答案,我想我可以自己阅读和翻译。

edit:我刚刚使用了 fiddler,收到了 8 个正在发送的帖子。这是否意味着我已经将所有 8 个都发送到了 url?

【问题讨论】:

  • 密码不应该可以在url中传递,那已经足够了。至少在我找到更好的答案之前。

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


【解决方案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 代码。

【讨论】:

  • 我太傻了,我的意思是 htmlAgilityPack 使用 httpRequest,而不是 Webbrowser 类。我不知道为什么我这样搞砸了我的问题。我会编辑它。感谢您的提琴手应用程序似乎很有帮助。
  • 我会按照 Knagis 所说的去做:安装 Fiddler,然后使用浏览器登录以查看它是如何发送的。如果它是通过 POST 发送的,请确保将该方法与 HttpWebRequest 一起使用。
  • 我看过,但不是很清楚发帖的位置。我看到一个帖子正在完成,它是“登录”帖子,而不是我的用户名和密码。所以我仍然不清楚到底该怎么做。
  • 一个 POST 请求将包含多个值 - 查看 Fiddler 的右侧 - 有一个 WebForms 选项卡将显示所有正在发布的值。
  • 好的,我明白了,谢谢。既然我有了这些信息,你建议我如何将这些信息发布到 url 中?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-16
  • 1970-01-01
  • 1970-01-01
  • 2020-04-04
  • 1970-01-01
相关资源
最近更新 更多