如何引用微軟的 mshtml 抓取網頁作即時變更或分析[原創][教程]

目前網路上有很多免費的 html parper 供人下載使用, 殊不知 Microsoft本身也有提供 Microsoft. Html 可用,以下就先對它要如何的在VS中引用略作說明,供大家參考。

首先先建立一個專案




我們選擇建立一個主控台的專案



專案盡力之後 我們在方案總管中 找到參考 在參考上按下 滑鼠 右鍵,選擇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"));
        }
    }
}




留言

這個網誌中的熱門文章

[C#]Windows 10 停用與啟用網路卡(連線)[手把手教程][原創]

ASP.NET Web API 將傳回的值轉換從控制器動作至 HTTP 回應訊息的方式。

[C#]程式更改電腦IP位置與電腦名稱