淺談C#解析網頁

最近作了一個項目,要求獲取各大主流網頁上的關鍵信息,本人之前瞭解過網頁爬蟲的知識,因此想到了網頁爬蟲了實現功能css

第一次嘗試:html

採用webclient獲取遠程網頁的內容,而後採用正則表達式進行過濾node

但,因爲正則表達式對我來講,書寫起來比較複雜,研究個大半個月,一點進展都沒有,天天看着正則表達式像看天書(回頭須要向正則牛逼的人請教一下)web

第一次嘗試失敗,項目立刻就要驗收了,這個功能一直卡殼了,,,,,,,,正則表達式

 

忽然有一次,在網上看到了有人說起到了HtmlAgilityPack這個開源的工具包,本想着試一下的態度(由於我對這個網頁解析已經不抱有但願了)網頁爬蟲

僅僅有了幾行的代碼,竟然跟個人需求同樣實現了,萬分高興(此處使用HtmlAgilityPack須要學習一下xpath的一點知識,不過那些都很簡單,比起正則太easy了)網絡

好了,廢話很少說,上代碼工具

 

一、去官網上下載一個HtmlAgilityPack包,地址:http://htmlagilitypack.codeplex.com/學習

二、根據本身項目的.net版本,選擇適合的版本,引入項目ui

三、開始寫代碼了

HtmlAgilityPack基本跟全部的類同樣,直接使用裏面的方法和屬性就行,具體能夠參考官網

//獲取網頁指定內容
        public void GetHtml()
        {
            string htmlpath = "http://kaijiang.aicai.com/fcssq/";
            //建立對象
            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
            WebClient webclient = new WebClient();
            webclient.Credentials = CredentialCache.DefaultCredentials;//網絡憑證
            Byte[] pageData = webclient.DownloadData(htmlpath);
           // string pagehtml = Encoding.Default.GetString(pageData); //默認編碼
            string pagehtml = Encoding.UTF8.GetString(pageData);//UTF-8編碼

            //用htmlagilitypack 解析網頁內容

            //加載html
            doc.LoadHtml(pagehtml);

            //經過xpath 選中指定元素;xpath 參考:http://www.w3school.com.cn/xpath/xpath_syntax.asp
            HtmlAgilityPack.HtmlNode htmlnode = doc.DocumentNode.SelectSingleNode("//div[@id='jq_openResult']");
            StringBuilder sb = new StringBuilder();
            string s = "";
            
            HtmlAgilityPack.HtmlNodeCollection nodecollection = htmlnode.ChildNodes;
            for (int i = 0; i < nodecollection.Count; i++)
            {
                if (nodecollection[i].InnerText.Trim()!="")
                {
                    TextBox1.Text += nodecollection[i].InnerText + "-";
                    
                }  
            }
            TextBox1.Text = TextBox1.Text.Substring(0, TextBox1.Text.Length - 1);
            Console.WriteLine(s);

        }

至此,HtmlAgilityPack就徹底按照本身的要求解析出來了網頁上的任何你想要的,是否是很神奇~~

相關文章
相關標籤/搜索