|
만해 님이 쓰신 글 :
: 매댐덜 님이 쓰신 글 :
: : 먼저 HTML 클래스가 있는대요...
: :
: : 파서 만들어서 모에 쓰실건지가 궁금하네요...
: :
: : 일단 클래스 안에 보시면 쓰실건 다 있구요...
: :
: : 어떤 내용을 가져 오실건지 아니면 웹 페이지 자체를 파서 하실건지 모르겠네요..
: :
: : 저도 그거 만들어 봤는데 무지 노가다네요...
: :
: : 전 파서 써서 로그인쪽만 가져와서 로그인 시켜주는거 맹글었는뎅....
: :
: : 자세히 써주시면 제가 다시 답변을 드리죠...
: :
: :
: : 강재호 님이 쓰신 글 :
: : : 안녕하세요
: : :
: : : 만해입니다.
: : :
: : : 제가 요즘 웹쪽 프로그래밍을 할려고 해서
: : :
: : : Html 파서를 만들려고 하는데요
: : :
: : : 데브피아를 뒤져 보니깐
: : :
: : : MS에서 기존에 만들어 놓은
: : :
: : : mshtnl이라는 객체를 사용하면 된다는 애기가 있어서요
: : :
: : : mshtml에 대한 자료나 아니면 사이트를 좀 알려 주세요
: : :
: : : 참
: : :
: : : msdn은 다 뒤져 봤는데요
: : :
: : : 영어라서 어려버서 못 찾겠어요~
: : :
: : : 흑~ 영어 공부좀 해야 겠네~
: : :
: : : 그럼 이만~
: : :
: : : 참 그리고 제가 밑에 질문 올린 Richedit에 대한 답변은 없네요
: : :
: : : 어떻게 해결 해야 하는건지 쩝~
: : :
: : : 그럼 이만~
: : :
:
: 안녕하세요 만해 입니다.
:
: 제가 html 파서를 이용해서 사용할쪽은
:
: 어떤 거냐면요
:
: Html 문서를 가져와서
:
: 그걸 통째로 파서를 돌려서
:
: 우선은 기본적으로 Link와 관련된 Tag를 수집하는 거고요
:
: 차후에는 Html 문서에 있는 모든 object(Img,Javascript,VBscript)등을 수집해 와서
:
: 그걸 분석하는 그런 모듈을 개발코자 합니다.
:
: 참 그리고 제가 어제 올린 질문이 있는데 그것에 대한 자료 없으신지요?
:
: 그럼 이만~
:
제가 만들어 논건 드릴순 없구요..지송(^^ 저두 그 회사가 라이센스 걸구 있어서 맘대루 흑흑)
일단 cHTML인가 하는 VC++에선 클래스 사용합니다...
모든 태그들을 다 걸러 낼수 있구요....그 내용또한 걸려 낼수 있습니다..
문제는 HTML 파서가 문제가 아니라 스트링에 대한 파서를 만들어야 합니다.
무슨 말인지는 아실테고..
아마도 제생각엔 스크린 스크랩핑 엔진을 만드시는 것 같은데....
예를 들어 드리겠습니다..지금 가지고 있는 것은 VC++ 소스 밖에 없는데...
CWebBrowser2* pBrowser = (CWebBrowser2*)GetDlgItem( IDC_EXPLORER1 );
pDisp = pBrowser->GetDocument();
if (pDisp != NULL )
{
IHTMLDocument2* pHTMLDocument2;
HRESULT hr;
hr = pDisp->QueryInterface( IID_IHTMLDocument2, (void**)&pHTMLDocument2 );
if (hr == S_OK)
{
IHTMLElementCollection* pColl;
hr = pHTMLDocument2->get_all( &pColl );
if (hr == S_OK)
{
LONG celem;
hr = pColl->get_length( &celem );
if ( hr == S_OK )
{
for ( int i=0; i< celem; i++ )
{
VARIANT varIndex;
varIndex.vt = VT_UINT;
varIndex.lVal = i;
VARIANT var2;
VariantInit( &var2 );
IDispatch* pDisp;
hr = pColl->item( varIndex, var2, &pDisp );
if ( hr == S_OK )
{
IHTMLElement* pElem;
hr = pDisp->QueryInterface( IID_IHTMLElement, (void **)&pElem );
if ( hr == S_OK )
{
BSTR bstr;
hr = pElem->get_tagName(&bstr);
CString strTag = bstr;
IHTMLImgElement* pImgElem;
hr = pDisp->QueryInterface( IID_IHTMLImgElement, (void **)&pImgElem );
if ( hr == S_OK )
{
pImgElem->get_href(&bstr);
strTag += " - ";
strTag += bstr;
pImgElem->Release();
}
else
{
IHTMLAnchorElement* pAnchElem;
hr = pDisp->QueryInterface( IID_IHTMLAnchorElement, (void **)&pAnchElem );
if ( hr == S_OK )
{
pAnchElem->get_href(&bstr);
strTag += " - ";
strTag += bstr;
pAnchElem->Release();
}
}
m_listTags.AddString( strTag );
pElem->Release();
}
pDisp->Release();
}
}
}
pColl->Release();
}
pHTMLDocument2->Release();
}
pDisp->Release();
}
이 소스는 제가 테이블의 내용만 가져올려고 만든겁니다...
이걸 응용 하시면 좋은 프로그램을 만드실 수 있을 것 같은데...
도움이 필요하시면 멜로 주시길...
전 지금은 개인용 검색엔진을 개발 중입니다..
거의 막바지에 이르렀지만...흑흑...
그럼 즐프 하시길
|