您的位置:首页 > Web前端 > HTML

C# WebBrowser 编程 使用mshtml读取网页内容

2014-04-25 15:38 543 查看
首先需要引用Microsoft.mshtml,AxInterop.SHDocVw

一些方法:

webBrowser.ScriptErrorsSuppressed = true;//允许脚本调试

webBrowser.WebBrowserShortcutsEnabled = true;//允许快捷键

/*********************一些事件的处理*******************/

webBrowser.CanGoForwardChanged += new EventHandler(webBrowser_CanGoForwardChanged);

webBrowser.CanGoBackChanged += new EventHandler(webBrowser_CanGoBackChanged);

webBrowser.StatusTextChanged += new EventHandler(webBrowser1_StatusTextChanged);

webBrowser.Navigating += new WebBrowserNavigatingEventHandler(webBrowser1_Navigating);

webBrowser.Navigated += new WebBrowserNavigatedEventHandler(webBrowser1_Navigated);

webBrowser.DocumentTitleChanged += new EventHandler(webBrowser1_DocumentTitleChanged);

webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);

webBrowser.Disposed += new EventHandler(webBrowser1_Disposed);

(webBrowser.ActiveXInstance as SHDocVw.WebBrowser).NewWindow3 += new SHDocVw.DWebBrowserEvents2_NewWindow3EventHandler(FrmIEExplorer_NewWindow3);

webBrowser.ProgressChanged += new WebBrowserProgressChangedEventHandler(webBrowser1_ProgressChanged);

/*********************************************************/

private WebBrowser CreateNewWebBrowser()

{

WebBrowser _axWebBrowser = new WebBrowser();

_axWebBrowser.Tag = new HE_WebBrowserTag();

_axWebBrowser.Dock = DockStyle.Fill;

TabPage _TabPage = new TabPage();

_TabPage.Controls.Add(_axWebBrowser);

RegisterEvent(_axWebBrowser);

flatTabControl1.TabPages.Add(_TabPage);

flatTabControl1.SelectedTab = _TabPage;

_ActiveWebBrowser = _axWebBrowser;

btn_Remove.Enabled = flatTabControl1.TabPages.Count >= 1;

// tblCloseTab.Enabled = true;

return _axWebBrowser;

}

/// <summary>

/// 新窗口事件

/// </summary>

/// <param name="ppDisp"></param>

/// <param name="Cancel"></param>

/// <param name="dwFlags"></param>

/// <param name="bstrUrlContext"></param>

/// <param name="bstrUrl"></param>

void FrmIEExplorer_NewWindow3(ref object ppDisp, ref bool Cancel, uint dwFlags, string bstrUrlContext, string bstrUrl)

{

Cancel = true;

ppDisp = (this._ActiveWebBrowser.ActiveXInstance as SHDocVw.WebBrowser).Application;//这里是关键

WebBrowser _axWebBrowser = CreateNewWebBrowser();

_axWebBrowser.Navigate(bstrUrl);

}

//读取网页内容

private void ReadDoc(IHTMLDocument2 doc)

{

int inputcount = doc.all.length;

foreach (IHTMLElement item in doc.all)

{

if (item.id == "_petName" || item.id == "userNameTopLine")

{

this.rich_src.AppendText(" id:");

this.rich_src.AppendText(item.innerText);

}

//this.rich_src.AppendText(" id:");

//this.rich_src.AppendText(item.id == null ? "未设置" : item.id);

//this.rich_src.AppendText(" tag:");

//this.rich_src.AppendText(item.tagName);

//this.rich_src.AppendText(" innerHTML:");

//this.rich_src.AppendText(item.innerHTML == null ? "未设置" : item.innerHTML);

//this.rich_src.AppendText("\r\n-------------\r\n");

if (item.tagName.Equals("FRAME"))

{

//this.rich_src.AppendText(" IFRAME id:");

//this.rich_src.AppendText(item.id == null ? "未设置" : item.id);

//this.rich_src.AppendText("\r\n-------------\r\n");

mshtml.IHTMLFrameBase2 iFrame = (mshtml.IHTMLFrameBase2)item;

mshtml.IHTMLDocument2 iHTMLDocument2 = iFrame.contentWindow.document;

ReadDoc(iHTMLDocument2);

}

}

}

下面2句代码获取IHTMLDocument2

IHTMLDocument2 doc = _ActiveWebBrowser.Document.DomDocument as IHTMLDocument2;

ReadDoc(doc);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: