从网页中读数据的问题?多谢

dciw 2003-09-03 12:04:24
朋友想做一个能从网页上抓数据存起来的东西
我应该能用findwindow找到ie的句炳,然后用什么能读取它的html值呢?
...全文
39 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xsc2001 2003-10-03
  • 打赏
  • 举报
回复
CHttpFile* fileGet;
CException* e;
TRY
{
fileGet=(CHttpFile*)sess.OpenURL((char*)strURL);//Open file
}
CATCH_ALL(e)
{
fileGet = 0;
}
END_CATCH_ALL

if(fileGet)
{
DWORD dwStatus;
DWORD dwBuffLen = sizeof(dwStatus);
BOOL bSuccess = fileGet->QueryInfo(
HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER,
&dwStatus, &dwBuffLen);

if( bSuccess && dwStatus>= 200&& dwStatus<300 )
{
while(fileGet->ReadString(strSentence))
m_FileContent+=strSentence;
}// if bSuccess.
fileGet->Close();
delete fileGet;
}
sess.Close();
smch 2003-10-03
  • 打赏
  • 举报
回复
呵呵,楼上的说的很对,你那样是把事情复杂化了。极大的复杂化。
liuchengdan 2003-10-03
  • 打赏
  • 举报
回复
给出获取网页源代码的函数。

BOOL GetSourceByURL(CString sURL, CString &fileContent)
{
CInternetSession internetSession;
CHttpConnection* pHttpConnection = NULL;
CHttpFile* pHttpFile = NULL;
CString strServer, strObject;
DWORD dwServiceType = 0;
DWORD dwHttpRequestFlags = INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECT;
TCHAR szHeaders[] = _T("Accept: text/*\r\nUser-Agent: LCD's Sample Http Client\r\n");
INTERNET_PORT nPort;
int nRet = 0;

nRet = AfxParseURL( (LPCTSTR)sURL, dwServiceType, strServer, strObject, nPort );
if( !nRet || dwServiceType != INTERNET_SERVICE_HTTP )
{
fileContent.Empty();
AfxMessageBox( "不能保存请求保存的网页的源代码。原因可能如下:\r\n\r\n1)请求不是一个HTTP请求。\r\n\r\n2)所请求的URL无法到达。" );
return FALSE;
}

pHttpConnection = internetSession.GetHttpConnection( strServer, nPort );
pHttpFile = pHttpConnection->OpenRequest( CHttpConnection::HTTP_VERB_GET, strObject, NULL, 1, NULL, NULL, dwHttpRequestFlags);
pHttpFile->AddRequestHeaders( szHeaders );
pHttpFile->SendRequest();

DWORD dwRet = 0;
pHttpFile->QueryInfoStatusCode( dwRet );
if( dwRet == HTTP_STATUS_DENIED )
{
AfxMessageBox( "连接被拒绝" );
return FALSE;
}

CString string, prefix, suffix, path, sCopy, sTemp, strFilePath;
int iStart = 0, iEnd = 0;

strFilePath = sURL.Left( ( sURL.ReverseFind( '/' ) ) );

fileContent.Empty();
while( pHttpFile->ReadString( string ) )
{
fileContent += "\r\n" + string;
}

pHttpFile->Close();
pHttpConnection->Close();
delete pHttpFile;
delete pHttpConnection;

return TRUE;
}
hotness28 2003-10-02
  • 打赏
  • 举报
回复
很好的一个办法就是:
把网页保存下来,然后读取
如果不这样,那用findwindow(),但是还要找到控件
我认为会很麻烦
brilliancechen 2003-09-30
  • 打赏
  • 举报
回复
用 request.form("varname ") 不行吗?
generalz 2003-09-24
  • 打赏
  • 举报
回复
不懂,我也很想知道啊!
高手快来啊!
henryzc 2003-09-04
  • 打赏
  • 举报
回复
findwindow会找到很多IE窗口吧。通过com组件,在右键菜单中,实现保存功能
ruanyuping 2003-09-03
  • 打赏
  • 举报
回复
up

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧