与网站C ++互动

时间:2011-04-02 19:51:25

标签: c++

如何使用C ++与网站进行互动?

例如,一个网站有一个保管箱,文本区域和一个按钮,我希望我的程序在文本区域内填充文本,从保管箱中选择一个选项,并使按钮触发其事件(“点击”它)。

我怎样才能实现这样的目标?

谢谢!

4 个答案:

答案 0 :(得分:3)

首先,您必须了解服务器上没有文本框或按钮。

这些是由浏览器构建以显示给您的构造。

然后,浏览器将用户输入文本框并解释按钮上的点击。单击按钮时(通常)发生的事情是浏览器向服务器发送HTML“POST”请求。浏览器根据用户在UI中完成的操作构建帖子请求。

示例:

服务器发送到浏览器:

<html>
    <head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><title>TestDoc</title></head>
    <body>
        <form action="http://website.com/form.html" method="post">
        <div>
            <textarea name="userinfo" rows="2" cols="30">Some Text</textarea>
            <input type="submit">
        </div>
        </form>
    </body>
</html>

您的浏览器会解释此信息并显示一个文本框并提交按钮。当您按下提交按钮时,浏览器会构建一个HTTP post命令,该命令将被发送回浏览器。它连接到http://website.com/form.html的网站(请参阅上面代码段中的表单标记)并发送文本区域的内容(标记为值userinfo)。

您可以手动执行相同的操作 但是您需要了解网站期望的价值,并根据网站的期望构建适当的命令。要做到这一点,最简单的方法是使用libCurl。该软件包的文档详细说明了如何构建发布请求。

这是帖子example

答案 1 :(得分:1)

看看al libcurl。它是一个C库,但你绝对可以用C ++来实现你想要的。

如果您只需要进行一些随意的WebSite交互,我建议您查看比C ++更适合(也更容易使用)的语言。 Python(使用Mechanize库),Ruby,PHP,Perl ......

即使是Java和C#也有本地库来处理这样的事情。

答案 2 :(得分:0)

好的,这实际上取决于一些事情。您可能会因为认为需要让程序填写表单而使您的问题过于复杂,就像它是一个人类一样。相反,你为什么不跳过那一步?

当您提交表单时,您的浏览器会在Internet上发送HTTP POST(通常)请求,并在标题中显示您的表单详细信息。如果您事先知道了表单的内容,您可以简单地让程序将POST请求发送到服务器,就像有人提交了表单一样。

如果您不知道表单是什么,那么您需要向服务器发送GET请求以检索页面,然后以某种方式分析页面以提取填写表单详细信息所需的信息(这是您的问题)然后发送POST请求,其中包含上述详细信息。

这可以通过libcurl库完成。它允许您通过简单的界面发送HTTP请求。

现在,如果您的问题实际上要求您创建一个充当人类的程序并且真正操纵浏览器来填写表单,那么您需要了解模拟按键和鼠标点击,这可能是平台依赖。

答案 3 :(得分:0)

如果libcurl不足以满足您的需求,您可能需要查看Qt,特别是QtWebKit模块。它基本上包含了一个完整的浏览器引擎,谷歌Chrome也使用它。使用该引擎,您甚至可以在网站的上下文中执行自己的JavaScript代码,并模拟登录。