在 C# 中与网页交互
Posted
技术标签:
【中文标题】在 C# 中与网页交互【英文标题】:Interacting with web pages in C# 【发布时间】:2012-02-19 17:16:54 【问题描述】:有一个使用 ColdFusion 创建的网站(不确定这是否重要)。我需要与这个网站互动。我需要做的主要事情是导航到不同的页面并单击按钮。
我想出了两个关于如何做到这一点的想法。首先是使用WebBrowser 控件。有了这个,我当然可以浏览页面,点击按钮(根据This)。
另一种方式是直接与html交互。不知道具体怎么做,但我假设我可以单击按钮或使用 HTML 请求与页面交互。
有没有人推荐哪种方式更好?有没有我没有想到的更好的方法?
【问题讨论】:
试试WatiN。 正如其他人在下面发布的那样,在 .NET 中对站点进行景观化的常规方法是使用 HttpWebRequest。您可以使用代码轻松导航站点并发出 post/get 请求以模拟交互(按钮按下)。您应该使用 Fiddler(免费代理)记录该过程,这将允许您查看您如何与网站交互的整个过程,以便您可以在代码中重新创建它。 HtmlAgilityPack 是解析 HTML 的绝佳工具,根据您要抓取的内容,可能需要它。 【参考方案1】:我会使用 Html AgilityPack 解析 html,然后使用 HttpWebRequest 适当地执行 POST 和 GET。
虽然可以使用 WebBrowser 控件来模拟点击和导航,但您可以通过 Html AgilityPack 和 HttpWebRequest 对发送的内容进行更多控制
【讨论】:
【参考方案2】:你考虑过Selenium吗? WebDriver API 非常好,在网站自动化方面可以做很多事情。
【讨论】:
此处链接断开【参考方案3】:HtmlAguilityPack 对于拉取网页元素和轻松查找标签很有用。但是,如果您需要远程“引导”网络会话,我更喜欢使用WatiN。它自称是一个 Web 单元测试框架,但它在您需要伪造浏览器部分的任何时候都非常有用。此外,它可以很好地远程控制不同的浏览器,以完成您需要的大多数任务(例如找到一个按钮并按下它,或者在您需要登录时找到一个文本字段并填写文本)。
【讨论】:
【参考方案4】:为什么不直接提交网址呢?这就是按钮单击将执行的操作。 使用WebRequest.Create 可以直接提交到网址。无需加载、解析和“点击”按钮。
【讨论】:
以上是关于在 C# 中与网页交互的主要内容,如果未能解决你的问题,请参考以下文章
Java / Spring中与Restful API交互的工具[重复]