使用C#访问网站
accessing websites using C#
我有一个问题。假设在一个网站上有一个用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库。
- 为什么在这个网站上不能通过JS访问元素
- 从应用程序脚本检查谷歌网站访问权限
- 检测网站是否被直接访问.是否可能
- "访问控制允许起源”;通过javascript从http页面调用同一网站的httpsurl时出现问题
- 从“新建”选项卡中的“访问次数最多”部分删除网站
- 仅允许使用 Dropbox API 访问特定网站
- Meteor:使用HTTP.get从客户端访问网站(CORS错误)
- Node.js快递网站可在线访问
- 优化的方法;标题“;只发送一次POST请求即可访问网站
- 将所有访问过的网站颜色重置为所有最新浏览器和所有doctype(xhtml,html,html5)的默认颜色css设置
- 使用网站访问本地文件
- 我如何不允许包含我的网站访问页面数据
- 如何在第一次网站访问时制作一个javascript弹出框
- 从我的网站访问GCE API
- 重定向至“从网站访问Android应用程序”诊断树
- 防止外部网站访问我的ashx页面
- 从互联网上的网站访问javascript函数
- 限制网站访问QR扫描仅
- 是否可以使用手机网站访问通话记录?
- 使用JS/Jquery在网站访问时调整浏览器窗口大小