使用C++程序獲取新浪行情數據的方法
更新時間:2022年04月27日 08:11:14 作者:邵明
這篇文章介紹了在一定的周期范圍內去抓取新浪中行情數據,通過更新數據來緩解構造模擬數據與真實數據差異性,感興趣的朋友可以了解一下
在日常開發(fā)中我們經常會使用到行情數據,很多的時候我們根據一個基準數據區(qū)構造行情,但是隨著時間的推移然來構造的數據與真實行情數據之間的差距越來越大。
本問以AG1309為例子來說明,如何使用C++程序來獲取新浪行情數據。(說明如果合約過期獲取的數據將未空,此時請更換合約信息)。
好了,在這里就不再將廢話,直接給出源碼供大家學習!
// HttpDataTest.cpp : 定義控制臺應用程序的入口點。
#include "stdafx.h"
#include
#include
#include
#include
#include
#include
#define MAXSIZE 1024
#pragma comment(lib, "Wininet.lib")
void urlopen(_TCHAR*);
std::string GetSubBtFind(char* lpsz);
int Token(const char* pSep, char* pStr, std::vector& refvec);
int _tmain(int argc, _TCHAR* argv[])
{
urlopen(_T("http://hq.sinajs.cn/list=AG1309"));
system("pause");
return 0;
}
void urlopen(_TCHAR* url)
{
HINTERNET hSession = InternetOpen(_T("UrlTest"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if(hSession != NULL)
{
HINTERNET hHttp = InternetOpenUrl(hSession, url, NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);
if (hHttp != NULL)
{
wprintf_s(_T("%s\n"), url);
char Temp[MAXSIZE];
ULONG Number = 1;
while (Number > 0)
{
InternetReadFile(hHttp, Temp, MAXSIZE - 1, &Number);
Temp[Number] = '\0';
std::string str= GetSubBtFind(Temp);
;
char szpstr[1024];
strcpy(szpstr, str.c_str());
std::vector vec;
Token(",", szpstr, vec);
printf("%s\n", Temp);
for(int i=0; i
{
printf("%s\n", vec[i]);
}
}
InternetCloseHandle(hHttp);
hHttp = NULL;
}
InternetCloseHandle(hSession);
hSession = NULL;
}
}
std::string GetSubBtFind(char* lpsz)
{
std::string scrStr=lpsz;
std::string str_temp="";
int len=strlen(lpsz);
int beginPos=scrStr.find("\"");
scrStr=scrStr.substr(beginPos+1,len);
int endPos=scrStr.find("\"");
str_temp=scrStr.substr(0,endPos);
return str_temp;
}
int Token(const char* pSep, char* pStr, std::vector& refvec)
{
for(char* outer = strtok(pStr, pSep) ; NULL != outer; outer = strtok(NULL, pSep))
{
refvec.push_back(outer);
}
return 0;
}
上述代碼在vs2008下運行結果如下:

以上就是本文的全部內容,希望對大家熟練應用C++程序抓取數據有所幫助
相關文章
C++ 關于 CMFCPropertyGridCtrl 的使用方法
這篇文章主要介紹了C++ 關于 CMFCPropertyGridCtrl 的使用方法的相關資料,需要的朋友可以參考下2015-06-06

