抓不了資料的網站 :臺灣證券交易所 基本市況報導, 求!
「臺灣證券交易所」網頁:http://newmis.「台灣期貨交易所」網頁:
(http://info512.)
一樣是抓伺服器的即時資料,「台灣期貨交易所」就都ok,
(用IneternetExplorer直接巡覽及用excel的CreateObject("InternetExplorer.Application")
抓臺灣證券交易所也ok
用VC++抓臺灣證券交易所都沒辦法
對於「臺灣證券交易所」網頁,嘗試過
1. 使用CHtmlView
2. 使用ActiveX 的CExplorer1
3. 使用DotNet 的WebBrowser1_Navigated
4. 使用afxinet的GetHttpConnection
5. 使用MSXML的 IXMLHTTPRequest
都只取得文字(網頁框架),數字(DATA)都跑不出來
使用CHtmlView時,有出現四個”網頁指令碼發生錯誤”訊息
1. http://newmis. ‘Highcharts’未經定義
2. http:/newmis. 必須要有識別項,字串或數字
3. http://newsmis. 屬性物件’loadPaeChangeFunction’的值為null 或未經定義,且不是Function
4. http://newmis. 找不到成員。
記得半個月之前是出現二個錯誤,還抓得到DATA,之後就抓不到,試了很久,才發現多了二個錯誤了( sever 那邊改了程式碼?)
Afxinet的程式碼如下:
DWORD dwFlags = INTERNET_FLAG_TRANSFER_ASCII ;
DWORD dwHttpRequestFlags = INTERNET_FLAG_DONT_CACHE ;
DWORD dwServiceType;
INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER;
CString strServerName,strObject,strURL="http://newmis.
BOOL bResult = AfxParseURL(strURL, dwServiceType, strServerName, strObject, nPort);
DisplayHttpPage(strServerName,strObject);
void CmeInetenetSessionDoc::DisplayHttpPage(LPCTSTR pszServerName, LPCTSTR pszFileName)
{
CInternetSession session(_T("My Session"));
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
try
{
CString strServerName;
INTERNET_PORT nPort = 80;
DWORD dwRet = 0;
CString szHeader1= "Accept:text/html\r\n"
"Accept-Language: zh_tw\r\n"
"Accept-Charset:big-5\r\n"
//"Host: newmis.\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"User-Agent: Mozilla/5.0 (Windows NT 6.1;Win64; Trident/7.0; rv:11.0) like Gecko"
"Connection: Keep-Alive\r\n"
"Cache-Control: no-cache\r\n\r\n";
pServer = session.GetHttpConnection(pszServerName, nPort);
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET, pszFileName);
BOOL result = pFile->SendRequest(szHeader1);
CString cs;
pFile->QueryInfoStatusCode(dwRet);
if (dwRet == HTTP_STATUS_OK)
{
CHAR szBuff[1024];
CFile file;
file.Open("z:\\test.html",CFile::modeCreate|CFile::modeWrite);
while (pFile->Read(szBuff,1024) > 0)
{
file.Write(szBuff,sizeof szBuff);
//AfxMessageBox(szBuff);
}
file.Close();
delete pFile;
delete pServer;
}
}
catch (CInternetException* pEx)
{
//catch errors from WinInet
TCHAR pszError[64];
pEx->GetErrorMessage(pszError, 64);
AfxMessageBox( pszError);
}
session.Close();
}
請問要如何更改它,才接收得到data ?