c++程序,从网页中获取汇率

c++ program which gets the currency rates from webpage

本文关键字:获取 汇率 网页 程序 c++      更新时间:2023-10-16

嗨,我想用C++编写一个程序,从谷歌、雅虎或其他网页获得实时价格,然后执行转换。有人能指导我怎么做吗?

CSocket r;
wchar_t ku[5100];
AfxSocketInit();
 wchar_t b[]=L"GET /currency-converter/#from=USD;to=EUR;amt=1 H
TTP/1.1rnhost:finance.yahoo.comrnrn";
;
    r.Create()
    r.Connect(L"finance.yahoo.com",80);
    r.Send(b,sizeof(b));
    r.Receive(ku,sizeof(ku));  //header stuff
    r.Receive(ku,sizeof(ku));  //rate
    CString t(ku); 
    //grabbed data is ready 

优点:CString+WSA错误填充

和linux示例:

#include<stdio.h> //printf
#include<string.h>    //strlen
#include<sys/socket.h>    //socket
#include<arpa/inet.h> //inet_addr
 #include <unistd.h> 
       #include <netdb.h>
int main(int argc , char *argv[])
{
    int sock;
    struct sockaddr_in server;
    char  server_reply[5000];
     struct hostent *host;
    //Create socket
    sock = socket(AF_INET , SOCK_STREAM , 0);
    if (sock == -1)
    {
        printf("Could not create socket");
    }
    puts("Socket created");
     host = gethostbyname("finance.yahoo.com");

    server.sin_addr.s_addr=*((unsigned long*)host->h_addr);
    server.sin_family = AF_INET;
    server.sin_port = htons( 80 );
    //Connect to remote server
    if (connect(sock , (struct sockaddr *)&server , sizeof(server)) < 0)
    {
        perror("connect failed. Error");
        return 1;
    }
    puts("Connectedn");

char        message[]="GET /currency-converter/#from=USD;to=EUR;amt=1 HTTP/1.1rnhost:finance.yahoo.comrnrn";
        //Send some data
        if( send(sock , message , strlen(message) , 0) < 0)
        {
            puts("Send failed");
            return 1;
        }

        //Receive a reply from the server
        if( recv(sock , server_reply , 3000 , 0) < 0)
        {
            puts("recv failed");
        }
        puts("Server reply :");
        puts(server_reply);

        //Receive a reply from the server
        if( recv(sock , server_reply , 3000 , 0) < 0)
        {
            puts("recv failed");
        }
         puts(server_reply);

    close(sock);
    return 0;
}

这个问题很宽泛。几个主要步骤可以定义如下:

  1. 你可以创建一个到特定网站的套接字,并从该网站流式传输数据。有关这方面的更多信息,您可以查看-http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio/overview/networking/iostreams.html

  2. 然后,您可以扫描数据并编写正则表达式,以便从数据中检索值,然后将它们输出到您想要显示的任何位置。

然后,您可以编写一个bash脚本,以定期一次又一次地运行此代码对象。因此,您可以在不手动扫描网站的情况下获得实时结果。