2010-07-15 241 views
2

我有一个应用程序的想法,这将真正帮助我在工作中,但我不确定是否有可能。从网页获取数据

我想运行一个C#桌面应用程序,它会询问一个值。当提供一个值时,应用程序将打开一个浏览器,转到一个网页,并将该值添加到在线网站上的表单中。然后提交表单并加载一个包含结果表的新页面。然后我想从页面源中提取结果表并编写代码来解析结果值。

用户在实际浏览器中看到这种情况并不重要。换句话说,如果有办法通过读取HTTP请求来做到这一点,那很好。

我遇到的最大问题是将值放入表单中,然后在表单提交并加载下一页后检索页面源。

任何帮助真的很感激。

谢谢

+0

您是否控制了网站,或者您是否从其他人的网站上抓取了数据? – 2010-07-15 14:45:23

+0

该网站是我们的一台服务器上的数据的前端,尽管我们因某种原因不允许直接访问。一切都必须通过网络 – user392810 2010-07-15 15:55:46

回答

1

这绝对是可能的,你不需要使用真正的网络浏览器。您可以简单地使用System.Net.WebClient来发送您的HTTP请求并获得HTTP响应。

我建议使用wireshark(或者你可以使用Firefox + Firebug),它允许你看到HTTP请求和响应。通过查看HTTP流量,您可以清楚地看到应该如何传递HTTP请求以及应该设置哪些参数。

+0

要查看请求和响应,我相信Firefox + Firebug组合更容易。 – Amadan 2010-07-15 14:48:04

+0

@Amadan:正确的感谢我添加了你的建议。 – 2010-07-15 14:50:21

0

你不需要使用这个浏览器。 WebClient应该做你需要的一切。您需要查看在使用浏览器提交表单时实际发布的内容,然后您应该能够使用WebClient发出POST请求并以字符串形式检索结果页面。

WebClient constructor的文档有一个很好的例子。

1

假如你只在合法范围内使用这样的:

通常情况下,Web表单通过POST请求发送到Web服务器,特别是一些脚本处理它发送。您可以查看表单页面的HTML代码并找出表单的目的地(表单的操作)。

然后,您可以在C#中使用HttpWebRequest“假装自己是表单”,并发送一个包含所有必需参数(将它们添加到HTTP标头)的POST请求。

因此,您将获得目标页面的源代码,因为它将被发送到浏览器。你可以解析这个。

0

参见例如this question至少在数据检索方面有一些指针。在完成此操作之前,您将了解更多有关http protocol的信息...

0

如果您甚至不希望用户执行任何操作,您为什么要通过网页执行此操作? 网页纯粹是为了与用户交互,如果你只是想要数据传输,使用WCF。

@Brian使用Wireshark会导致一个非常生气的网络管理员,确保你真的被允许使用它。