使用C#访问网站

accessing websites using C#

本文关键字:网站 访问 使用      更新时间:2023-11-21

我有一个问题。假设在一个网站上有一个用javascript实现的基本计算器(我在谷歌上搜索了它,找到了一个例子,发现了这个:http://www.unitsconverter.net/calculator/)。我想做的是制作一个程序,打开这个网站,输入一些值并获得返回值。因此,在我们的网站计算器中,程序:-打开网站-输入操作数-进入操作-输入操作数-检索结果注意:应该在不需要向用户(例如浏览器)显示任何内容的情况下进行操作。

我做了一些搜索,找到了关于HttpWebRequest和HttpWebRespond的信息。但我认为这些可以用于将数据发布到服务器,这意味着,我要发送数据的文件必须是php、aspx或jsp。但Javascript是客户端。所以,我认为在这种情况下,它们对我来说有点无用。

有什么帮助吗?

更新:我已经成功地使用WebBrowser控件工具(在System.Windows.Forms中找到)开发了web机器人以下是代码示例:

    webBrowser1.Navigate("LinkOfTheSiteYouWant"); // this will load the page specified in the string. You can add webBrowser1.ScriptErrorsSuppressed = true; to disable the script in a page
    webBrowser1.Document.GetElementById("ElementId").SetAttribute("HTMLattrbute", "valueToBeSet");

这些是我用来做我想做的事情的主要方法。我发现这个视频很有用:http://www.youtube.com/watch?v=5P2KvFN_aLY

我想你可以使用类似WatiN的东西将用户的输入/输出从你的应用程序管道传输到网站并返回结果,但正如另一位评论者所指出的,当你只需要编写自己的计算器时,这种东西的价值让我难以理解。

您需要一个JavaScript解释器(引擎)来解析页面上的所有JavaScript代码。

https://www.google.com/search?q=c%23+javascript+引擎

您想要的是更类似于web服务的东西。您提供的页面似乎不接受HTTPPOST中的任何数据,并且在源中没有任何可以收集的有意义的信息。例如,如果你想通过程序搜索易趣拍卖,你可以找到如何正确地将数据发布到它上,例如:

http://www.ebay.com/sch/i.html?_nkw=http+for+dummies&_sacat=267&_odkw=http+for+dummies&_osacat=0

然后在http响应中查找您要查找的信息。您可能需要创建一个正则表达式来匹配您要查找的标记,例如,如果您想知道有多少结果,您可以在http响应中搜索以下标记:

<div class="alt w"><div class="cnt">Your search returned <b>0 items.</b></div></div>

至于客户端/javascript之类的东西,你根本无法做任何你想要做的事情。

这是API的问题:"远程网站是否为所需的功能公开任何API?"。

公开交互式API的web资源称为web服务。有很多例子(谷歌地图表示距离)。

您可以访问API-取决于条款和;服务条件-通过客户。客户端的性质取决于您正在访问的web服务的类型。

  • 基于SOAP的服务是基于SOAP协议的。

  • 基于REST的服务是基于REST原则的。

因此,如果有一个名为"Calculator"的可访问web服务,那么您可以访问该服务,并调用sum方法。

在您的示例中,计算器是一个Javascript实现,因此它不是一个web服务,不能通过HTTP请求访问。尽管如此,它的实现仍然是可访问的:它是实现计算器的javascript文件。您可以随时将该文件包含在网站中,并通过javascript访问其功能(请注意条款和条件!!)。

一个非常常见的例子是存储在Google Libraries中的jQuery库。