MFC WebBrowser获取网面完整源码 WebBrowser获取网面完整HTML

反爬比较厉害的网站,用WebBrowser来获取网页源码,也可使用开源的浏览器来实现。

#include <MsHTML.h>
#include <atlconv.h>
void CMFCApplication1Dlg::DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL)
{
	CComDispatchDriver lpDisp = m_web.get_Application();
	if (lpDisp == pDisp)
	{
		//把地址更新到地址栏
		m_szUrl = URL->bstrVal;
		UpdateData(FALSE);

		//获取网页源码
		//IHTMLDocument get_Script();
		//CComQIPtr <IHTMLDocument> pDocument1(m_web.get_Document());
		CComQIPtr <IHTMLDocument2> pDocument2(m_web.get_Document());	//get_frames()
		//IHTMLDocument3 get_parentDocument() getElementsByTagName() getElementsByName() getElementById()
		//CComQIPtr <IHTMLDocument3> pDocument3(m_web.get_Document());
		//CComQIPtr <IHTMLDocument6> pDocument6(m_web.get_Document());
		//IHTMLDocument7 get_head() getElementsByTagNameNS() getElementsByClassName()
		//CComQIPtr <IHTMLDocument7> pDocument7(m_web.get_Document());
		CComQIPtr <IHTMLElement> pBody;
		CComQIPtr <IHTMLElement> pHTML;
		HRESULT hRet = pDocument2->get_body(&pBody);	//获得body
		if (FAILED(hRet) || !pBody) return;
		BSTR bszHtml, bszHtml2;
		//pBody->get_outerHTML(&bszHtml);		//获得body中的html

		CComQIPtr <IHTMLElement> pEle;
		pBody->get_parentElement(&pEle);	//获得body的父元素
		pEle->get_outerHTML(&bszHtml);		//获得页面完整html
		pEle->get_innerHTML(&bszHtml2);		//部分html,head+body
		//pEle->get_innerText(&bszHtml2);	//获得页面所有可见文本
		//TRACE(_T("%Ls"), bszHtml2);

		CString szTemp;
		szTemp.Format(_T("%Ts"), bszHtml);

		CString filename = _T("z:\\test.html");
		CFile oFile;
		if (oFile.Open(filename, CFile::modeCreate | CFile::modeWrite))
			oFile.Write(szTemp, szTemp.GetLength() * sizeof(TCHAR));
		//oFile.Flush();
		oFile.Close();

		//pDocument2->get_all(&pEle);
		//pEle->tags();

		/*pDocument7->get_head(&pHTML);
		pHTML->get_innerHTML(&bstr);*/
	}
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值