如何引用微軟的 mshtml 抓取網頁作即時變更或分析[原創][教程]
目前網路上有很多免費的 html parper 供人下載使用, 殊不知 Microsoft本身也有提供 Microsoft. Html 可用,以下就先對它要如何的在VS中引用略作說明,供大家參考。
首先先建立一個專案
Program.cs 程式如下:
我們選擇建立一個主控台的專案
專案盡力之後 我們在方案總管中 找到參考 在參考上按下 滑鼠 右鍵,選擇NuGet 套件。
先選擇左上方的瀏覽, 然後在搜尋的文字方塊中輸入 mshtml, 你就可以看到套件了,接著就將它安裝起來吧!
安裝動作完成的時候 你就可以再參考中 看到套件已經被用了
因為我們會用到 web browser 控件,所以我們必須在參考中再加上一個套 件 System. Windows. Forms
再來我們就開始程式的撰寫了,打開 Program.cs 先引用套件,再完成下方的程式。
你就可以執行看看了,下圖是我測試的結果。
Program.cs 程式如下:
using System;
using System.Threading;
using System.Windows.Forms;
using mshtml;
namespace ConsoleApp1 {
class Program {
private void runBrowserThread(Uri url) {
var t = new Thread(() => {
var b = new WebBrowser();
b.DocumentCompleted += browser_DocumentCompleted;
b.Navigate(url);
Application.Run();
});
t.SetApartmentState(ApartmentState.STA);
t.Start();
}
void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
var br = sender as WebBrowser;
if(br.Url == e.Url) {
IHTMLDocument2 htmlDoc = (IHTMLDocument2)br.Document.DomDocument;
htmlDoc.parentWindow.alert("Alert test.");
Application.ExitThread(); // Stops the thread
}
}
public string getWebContentByGet(string uri) {
string retVal = "";
runBrowserThread(new Uri(uri));
return retVal;
}
static void Main(string[] args) {
(new Program()).runBrowserThread(new Uri("https://www.google.com"));
}
}
}
using System.Threading;
using System.Windows.Forms;
using mshtml;
namespace ConsoleApp1 {
class Program {
private void runBrowserThread(Uri url) {
var t = new Thread(() => {
var b = new WebBrowser();
b.DocumentCompleted += browser_DocumentCompleted;
b.Navigate(url);
Application.Run();
});
t.SetApartmentState(ApartmentState.STA);
t.Start();
}
void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
var br = sender as WebBrowser;
if(br.Url == e.Url) {
IHTMLDocument2 htmlDoc = (IHTMLDocument2)br.Document.DomDocument;
htmlDoc.parentWindow.alert("Alert test.");
Application.ExitThread(); // Stops the thread
}
}
public string getWebContentByGet(string uri) {
string retVal = "";
runBrowserThread(new Uri(uri));
return retVal;
}
static void Main(string[] args) {
(new Program()).runBrowserThread(new Uri("https://www.google.com"));
}
}
}
留言
張貼留言