這篇文章介紹了在一定的周期范圍內(nèi)去抓取新浪中行情數(shù)據(jù),通過(guò)更新數(shù)據(jù)來(lái)緩解構(gòu)造模擬數(shù)據(jù)與真實(shí)數(shù)據(jù)差異性,感興趣的朋友可以了解一下
在日常開發(fā)中我們經(jīng)常會(huì)使用到行情數(shù)據(jù),很多的時(shí)候我們根據(jù)一個(gè)基準(zhǔn)數(shù)據(jù)區(qū)構(gòu)造行情,但是隨著時(shí)間的推移然來(lái)構(gòu)造的數(shù)據(jù)與真實(shí)行情數(shù)據(jù)之間的差距越來(lái)越大。
本問以AG1309為例子來(lái)說(shuō)明,如何使用C++程序來(lái)獲取新浪行情數(shù)據(jù)。(說(shuō)明如果合約過(guò)期獲取的數(shù)據(jù)將未空,此時(shí)請(qǐng)更換合約信息)。
好了,在這里就不再將廢話,直接給出源碼供大家學(xué)習(xí)!
// HttpDataTest.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
- #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下運(yùn)行結(jié)果如下:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家熟練應(yīng)用C++程序抓取數(shù)據(jù)有所幫助
新聞熱點(diǎn)
疑難解答