SHDocVw::IWebBrowser2Ptr、MSHTML::IHTMLElementPtr等を使って
URLにアクセスし、ホームページ上の内容(見た目上の文字)を
取得する事は可能でしょうか?
現在、以下のコードで<aaa>のように区切られている文字以外を
ホームページ上の内容として判断して取得しているのですが、
予想していた取得内容でありません。。。
SHDocVw::IWebBrowser2Ptr m_pBrowser;
:
:m_pBrowserでURLへジャンプ
:
CString strGetText;
MSHTML::IHTMLDocument2Ptr pHtmlDoc;
// ソースの取得
pHtmlDoc = m_pBrowser->Document;
//Bodyの取得
MSHTML::IHTMLElementPtr pHtmlBody = pHtmlDoc->body; //Bodyのオブジェクト
の取得
_bstr_t bstr_buf = pHtmlBody->outerHTML; //BodyのHTMLコードを
取得
CString strText = (LPTSTR)bstr_buf;
CString strGetText;
BOOL bGetWord = TRUE;
for( UINT i = 0 ; i < strText.GetLength() ; i++ ){
CString strChar = strText.Mid( i , 1 );
if( strChar == < ){
bGetWord = FALSE;
}
if( bGetWord ){
strGetText += strChar;
}
if( strChar == > ){
bGetWord = TRUE;
}
}
どうか、ご教授の程、宜しくお願い致します。
body->innerTextを取得したところ、
ある程度の内容は取得出来ました。
MSHTML::IHTMLDocument2Ptr pHtmlDoc;
pHtmlDoc = m_pBrowser->Document;
strGetText = (LPTSTR)pHtmlDoc->body->innerText;
ただ、全内容って訳ではないんです。
他に何か方法があるのでしょうか?
宜しくお願い致します。
フレームだったらフレームごとにドキュメントを取得する必要があるし、
ドメインの異なるサブフレームは別の方法が必要だし、といくつかコツがあります。
> ただ、全内容って訳ではないんです。
何が取得できて、何が取得できないか、きちんと(調べて)書いてください。
単にデバッガで表示できるサイズ制限に引っ掛かっているだけということは
ありませんよね?
おっしゃる通り正しく取得出来ていました。
デバッグコードでの文字数オーバーでした。
ご指摘ありがとうございます。