在 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交互的工具[重复]

C#在WinForm中使用WebKit传递js对象实现与网页交互的方法

C#与IE交互

如何在 Java 中与智能卡交互?

在python selenium中与动态标签交互元素

在 Python 中与另一个命令行程序交互