精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

介紹C#解析HTML的兩種方法

開發 后端
在搜索引擎的開發中,我們需要對Html進行解析。本文介紹C#解析HTML的兩種方法。

在搜索引擎的開發中,我們需要對網頁的Html內容進行檢索,難免的就需要對Html進行解析。拆分每一個節點并且獲取節點間的內容。此文介紹兩種C#解析Html的方法。

C#解析Html的第一種方法:

用System.Net.WebClient下載Web Page存到本地文件或者String中,用正則表達式來分析。這個方法可以用在Web Crawler等需要分析很多Web Page的應用中。

估計這也是大家最直接,最容易想到的一個方法。

轉自網上的一個實例:所有的href都抽取出來:

  1. using System;  
  2. using System.Net;  
  3. using System.Text;  
  4. using System.Text.RegularExpressions;  
  5. namespace HttpGet  
  6. {  
  7.     class Class1  
  8.     {  
  9.         [STAThread]  
  10.         static void Main(string[] args)  
  11.         {  
  12.             System.Net.WebClient client = new WebClient();  
  13.             byte[] page = client.DownloadData("http://www.google.com");  
  14.             string content = System.Text.Encoding.UTF8.GetString(page);  
  15.             string regex = "href=[\\\"\\\'](http:\\/\\/|\\.\\/|\\/)?\\w+(\\.\\w+)*(\\/\\w+(\\.\\w+)?)*(\\/|\\?\\w*=\\w*(&\\w*=\\w*)*)?[\\\"\\\']";  
  16.             Regex re = new Regex(regex);  
  17.             MatchCollection matches = re.Matches(content);  
  18.  
  19.             System.Collections.IEnumerator enu = matches.GetEnumerator();  
  20.             while (enu.MoveNext() && enu.Current != null)  
  21.             {  
  22.                 Match match = (Match)(enu.Current);  
  23.                 Console.Write(match.Value + "\r\n");  
  24.             }  
  25.         }  
  26.     }  

一些爬蟲的HTML解析中也是用的類似的方法。

C#解析Html的第二種方法:

利用Winista.Htmlparser.Net 解析Html。這是.NET平臺下解析Html的開源代碼,網上有源碼下載,百度一下就能搜到,這里就不提供了。并且有英文的幫助文檔。找不到的留下郵箱。

個人認為這是.net平臺下解析html不錯的解決方案,基本上能夠滿足我們對html的解析工作。

自己做了個實例:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Linq;  
  7. using System.Text;  
  8. using System.Windows.Forms;  
  9. using Winista.Text.HtmlParser;  
  10. using Winista.Text.HtmlParser.Lex;  
  11. using Winista.Text.HtmlParser.Util;  
  12. using Winista.Text.HtmlParser.Tags;  
  13. using Winista.Text.HtmlParser.Filters;  
  14.  
  15.  
  16. namespace HTMLParser  
  17. {  
  18.     public partial class Form1 : Form  
  19.     {  
  20.         public Form1()  
  21.         {  
  22.             InitializeComponent();  
  23.             AddUrl();  
  24.         }  
  25.  
  26.         private void btnParser_Click(object sender, EventArgs e)  
  27.         {  
  28.             #region 獲得網頁的html  
  29.             try 
  30.             {  
  31.  
  32.                 txtHtmlWhole.Text = "";  
  33.                 string url = CBUrl.SelectedItem.ToString().Trim();  
  34.                 System.Net.WebClient aWebClient = new System.Net.WebClient();  
  35.                 aWebClient.Encoding = System.Text.Encoding.Default;  
  36.                 string html = aWebClient.DownloadString(url);  
  37.                 txtHtmlWhole.Text = html;  
  38.             }  
  39.             catch (Exception ex)  
  40.             {  
  41.                 MessageBox.Show(ex.Message);  
  42.             }  
  43.             #endregion  
  44.  
  45.             #region 分析網頁html節點  
  46.             Lexer lexer = new Lexer(this.txtHtmlWhole.Text);  
  47.             Parser parser = new Parser(lexer);  
  48.             NodeList htmlNodes = parser.Parse(null);  
  49.             this.treeView1.Nodes.Clear();  
  50.             this.treeView1.Nodes.Add("root");  
  51.             TreeNode treeRoot = this.treeView1.Nodes[0];  
  52.             for (int i = 0; i <  htmlNodes.Count; i++)  
  53.             {  
  54.                 this.RecursionHtmlNode(treeRoot, htmlNodes[i], false);  
  55.             }  
  56.  
  57.             #endregion  
  58.  
  59.         }  
  60.  
  61.         private void RecursionHtmlNode(TreeNode treeNode, INode htmlNode, bool siblingRequired)  
  62.         {  
  63.             if (htmlNode == null || treeNode == nullreturn;  
  64.  
  65.             TreeNode current = treeNode;  
  66.             TreeNode content ;  
  67.             //current node  
  68.             if (htmlNode is ITag)  
  69.             {  
  70.                 ITag tag = (htmlNode as ITag);  
  71.                 if (!tag.IsEndTag())  
  72.                 {  
  73.                     string nodeString = tag.TagName;  
  74.                     if (tag.Attributes != null && tag.Attributes.Count > 0)  
  75.                     {  
  76.                         if (tag.Attributes["ID"] != null)  
  77.                         {  
  78.                             nodeString = nodeString + " { id=\"" + tag.Attributes["ID"].ToString() + "\" }";  
  79.                         }  
  80.                         if (tag.Attributes["HREF"] != null)  
  81.                         {  
  82.                             nodeString = nodeString + " { href=\"" + tag.Attributes["HREF"].ToString() + "\" }";  
  83.                         }  
  84.                     }  
  85.                       
  86.                     current = new TreeNode(nodeString);  
  87.                     treeNode.Nodes.Add(current);  
  88.                 }  
  89.             }  
  90.  
  91.             //獲取節點間的內容  
  92.             if (htmlNode.Children != null && htmlNode.Children.Count > 0)  
  93.             {  
  94.                 this.RecursionHtmlNode(current, htmlNode.FirstChild, true);  
  95.                 content = new TreeNode(htmlNode.FirstChild.GetText());  
  96.                 treeNode.Nodes.Add(content);  
  97.             }  
  98.  
  99.             //the sibling nodes  
  100.             if (siblingRequired)  
  101.             {  
  102.                 INode sibling = htmlNode.NextSibling;  
  103.                 while (sibling != null)  
  104.                 {  
  105.                     this.RecursionHtmlNode(treeNode, sibling, false);  
  106.                     sibling = sibling.NextSibling;  
  107.                 }  
  108.             }  
  109.         }  
  110.         private void AddUrl()  
  111.         {  
  112.             CBUrl.Items.Add("http://www.hao123.com");  
  113.             CBUrl.Items.Add("http://www.sina.com");  
  114.             CBUrl.Items.Add("http://www.heuet.edu.cn");  
  115.         }  
  116.  
  117.           
  118.  
  119.     }  

運行效果:

運行效果 

實現取來很容易,結合Winista.Htmlparser源碼很快就可以實現想要的效果。

小結:

簡單介紹了兩種C#解析Html的的方法,大家有什么其他好的方法還望指教。

【編輯推薦】

  1. 解密C#-SQLite是如何移植的
  2. 看看如何透過JavaScript調用C#函數
  3. 淺析C#事件注冊和注銷
  4. 示例:C#通過AMO對象瀏覽SQL SERVER 2005 SSAS
  5. C#隱藏窗口的幾種方法
責任編輯:book05 來源: cnblogs
相關推薦

2009-08-05 13:34:18

C#日期相減

2009-08-17 08:29:00

c#刪除指定文件

2009-08-21 18:02:41

C#快捷鍵

2009-08-25 11:35:27

C#連接數據庫

2010-06-17 12:48:05

livecd 修復Gr

2009-08-17 17:48:00

C#自定義鼠標樣式

2009-08-03 17:53:11

XML數據

2010-08-04 17:41:52

掛載NFS

2009-06-17 17:37:43

Java隨機數

2009-12-07 13:42:24

WCF框架

2010-04-13 09:50:44

Oracle跟蹤

2011-03-30 17:04:24

MySQL添加用戶

2010-11-24 14:36:25

修復mysql表

2009-09-25 14:04:09

Hibernate eHibernate h

2011-04-25 09:53:31

C++mysql

2011-05-24 09:18:59

C++連接mysql數據庫

2010-11-10 13:22:41

SQL Server備

2010-09-13 13:05:03

sql server分

2010-11-09 13:09:58

SQL Server分

2010-02-06 14:35:36

ibmdwRUP迭代
點贊
收藏

51CTO技術棧公眾號

黑森林福利视频导航| 91精品久久久久久久久久另类| 美女被爆操网站| 欧洲黄色一区| 26uuu欧美| 国产精品电影在线观看| 国产精品 欧美激情| 国产一区调教| 欧美体内she精视频| 91精品国产吴梦梦| 欧洲成人av| 精品在线播放免费| 538国产精品视频一区二区| 国产精成人品免费观看| 粉嫩av国产一区二区三区| 黄色一区二区在线观看| 一级特黄录像免费播放全99| 国产91绿帽单男绿奴| 丝袜美腿亚洲一区二区图片| 欧美成人亚洲成人| 成年人免费观看视频网站 | 午夜精品久久久久久久四虎美女版| 日韩女同互慰一区二区| 欧在线一二三四区| 波多野结衣精品| 国产精品久久久久久久岛一牛影视| 国产伦精品一区二区| 91肉色超薄丝袜脚交一区二区| 亚洲最黄网站| 欧美日韩爱爱视频| 天堂а√在线中文在线鲁大师| 日韩欧美黄色| 日韩一区二区三区高清免费看看| 免费观看成人网| 国产99在线观看| 亚洲激情图片一区| 伊人av成人| 国产网站在线播放| 99精品视频免费在线观看| 亚洲自拍偷拍色图| 国产精品伦一区二区三区| 日韩高清不卡在线| 国产成人综合一区二区三区| 亚州国产精品视频| 亚洲欧美文学| 久久成人一区二区| 国产真实乱在线更新| 999久久久免费精品国产| 一本一本久久a久久精品综合小说| 成人区人妻精品一区二| 999久久久精品一区二区| 欧美一区二区三区成人| 中文字幕资源在线观看| 日本国产欧美| 精品视频一区 二区 三区| 国产情侣av自拍| 在线亚洲人成| 色婷婷久久一区二区三区麻豆| 欧美 国产 综合| 狼人综合视频| 欧美色视频日本高清在线观看| 欧美 日韩 国产在线观看| 操人在线观看| 欧美性猛交99久久久久99按摩| 久色视频在线播放| 在线成人av观看| 欧美系列一区二区| 看看黄色一级片| 国产精久久一区二区| 日韩一卡二卡三卡四卡| 香蕉视频免费网站| 日本午夜精品| 亚洲视频999| 91视频免费看片| 亚欧美无遮挡hd高清在线视频| 久久在线视频在线| 日韩精品成人一区| 日韩av中文在线观看| 国产精品三级久久久久久电影| 中文字幕一区二区在线视频| 久久99精品久久久| 国产精品10p综合二区| 同心难改在线观看| 欧美激情资源网| 日本黄色a视频| 成人爽a毛片免费啪啪动漫| 狠狠操狠狠色综合网| www.超碰com| 精品午夜视频| 日韩精品在线观看一区| 少妇的滋味中文字幕bd| 综合精品久久| 欧洲成人在线视频| 国产精品午夜福利| 91香蕉国产在线观看软件| 天堂资源在线亚洲资源| 超碰在线免费播放| 日韩欧美福利视频| 国产高清999| 亚洲自拍都市欧美小说| 久久视频这里只有精品| 国产做受高潮漫动| 精品一区二区av| 久久精品国产一区二区三区日韩| 一广人看www在线观看免费视频| 亚洲欧美成人一区二区三区| 男人和女人啪啪网站| 欧洲精品久久久久毛片完整版| 日韩欧美一区二区视频| 亚洲精品国产一区黑色丝袜| 亚洲综合色网| 全亚洲最色的网站在线观看| av网站在线免费看| 国产欧美日韩在线视频| 青青草精品视频在线| 男人亚洲天堂| 国产视频丨精品|在线观看| 三上悠亚作品在线观看| 久久精品女人天堂| 国产精品久久久久久久天堂第1集| 成人好色电影| 精品露脸国产偷人在视频| 一级片免费在线观看视频| 欧美一级本道电影免费专区| 午夜精品久久久久久久男人的天堂| 一区二区视频免费观看| 91久色porny| 日韩精品一区二区在线视频| 狠狠久久伊人中文字幕| 亚洲美女激情视频| 国产中文字幕免费| 国产成人在线电影| 久久免费视频2| 国产一区二区三区四区五区3d| 精品视频www| 欧美日韩国产精品一区二区三区 | 亚洲激情综合网| 在线观看亚洲色图| 欧美禁忌电影网| 97不卡在线视频| 国产 欧美 精品| 一区av在线播放| 中文字幕avav| 亚洲精品一二三区区别| 国产三级精品网站| 亚洲精品传媒| 欧美视频自拍偷拍| 懂色av粉嫩av浪潮av| 青青草成人在线观看| 日本一区二区三区在线视频| 亚洲天堂电影| 精品香蕉一区二区三区| 91香蕉在线视频| 97精品国产97久久久久久久久久久久 | 欧美精品成人网| 综合综合综合综合综合网| 欧美亚洲视频在线观看| 四虎影视2018在线播放alocalhost| 亚瑟在线精品视频| 污污污www精品国产网站| 亚洲国产专区| 精品一区二区三区免费毛片| 毛片在线网站| 亚洲欧洲在线播放| 亚洲 国产 日韩 欧美| 日本一区二区高清| 午夜精品中文字幕| 一区二区中文| 成人欧美视频在线| 日本不良网站在线观看| 亚洲人成在线电影| 中文字幕+乱码+中文字幕明步| 国产精品蜜臀av| 亚洲精品一二三四| 国内精品99| 蜜桃av久久久亚洲精品| jizz久久久久久| 久久综合久久88| 色屁屁草草影院ccyycom| 一本大道久久a久久精二百| 亚洲一区 欧美| 国产真实乱偷精品视频免| 一本久道高清无码视频| 国产精品手机在线播放| 国产日韩精品在线观看| 青草在线视频在线观看| 亚洲激情自拍图| 欧美性受xxx黑人xyx性爽| 亚洲三级在线观看| 尤物网站在线观看| 秋霞成人午夜伦在线观看| 久久久成人精品一区二区三区| 中文字幕一区二区三区中文字幕| 97精品在线视频| jyzzz在线观看视频| 日韩免费视频一区| 伊人久久久久久久久久久久| 自拍偷自拍亚洲精品播放| 韩国三级视频在线观看| 日本系列欧美系列| 丁香六月激情婷婷| 日韩大片在线| 精品一区日韩成人| 欧美.com| 国产精品av在线| 日本h片在线| 一区二区三区日韩在线| 亚洲xxx在线| 欧美性videosxxxxx| 日本三级黄色大片| 日韩一区中文字幕| 欧美做受xxxxxⅹ性视频| 国产91精品免费| 污污的网站免费| 亚洲影院免费| 日本一级黄视频| 久久人人99| 久久人人九九| 超碰97久久| 国产精品视频自在线| 色在线免费观看| 欧美国产日韩一区二区三区| 在线观看精品一区二区三区| 日韩黄在线观看| 亚洲乱熟女一区二区| 欧美日韩精品免费观看视频| 青青青国产在线| 亚洲成人av在线电影| 久久久精品视频免费观看| 国产精品毛片无遮挡高清| 大又大又粗又硬又爽少妇毛片| 成人丝袜高跟foot| 亚欧精品在线视频| 极品销魂美女一区二区三区| 国产超碰在线播放| 另类天堂av| 国产欧美高清在线| 亚洲一区欧美激情| aa在线观看视频| 极品尤物久久久av免费看| 日本国产中文字幕| 欧美高清不卡| 欧美少妇一级片| 91tv官网精品成人亚洲| 国产大尺度在线观看| 91欧美在线| 中文字幕乱码一区二区三区| 日本一区二区免费高清| 亚洲二区三区四区| 全球成人免费直播| 亚洲欧洲国产日韩精品| 久久免费av| 欧美aaa在线观看| 国产精品99久久精品| 在线成人av电影| 久久精品国产www456c0m| 午夜视频久久久| 欧美mv日韩| 精品国产三级a∨在线| 五月天激情综合网| 国产激情在线看| 欧美成人中文| 欧美激情 国产精品| 亚洲影音先锋| 免费涩涩18网站入口| 精品一区二区在线视频| 日本女人黄色片| 成人综合激情网| 性色av蜜臀av色欲av| 久久久午夜电影| 影音先锋男人在线| 亚洲免费观看高清完整版在线观看熊| 国产suv一区二区三区| 亚洲国产精品久久一线不卡| 国产成人综合欧美精品久久| 色视频一区二区| 中文字幕在线播放不卡| 欧美一区二区三区免费视频| 欧美一区二不卡视频| 亚洲欧美国产另类| 免费av网站在线观看| 久久久久久久久久久免费精品 | 国产成人精品a视频一区www| 另类中文字幕国产精品| 91精品在线一区| 高潮久久久久久久久久久久久久 | 午夜久久免费观看| 国产精品一色哟哟| 久久久人人人| 911福利视频| 波波电影院一区二区三区| 国产美女免费网站| 亚洲自拍与偷拍| 欧美三级网站在线观看| 欧美一二三在线| 免费a级毛片在线观看| 久久视频免费观看| 在线高清av| 亚洲在线观看视频| 国产精品片aa在线观看| 日韩人妻一区二区三区蜜桃视频| 亚洲少妇在线| 波多野结衣免费观看| 26uuu另类欧美亚洲曰本| 99久久99久久精品国产| 色综合天天综合网国产成人综合天| 国产免费一区二区三区免费视频| 亚洲精品99999| 国产黄色在线观看| 日韩美女写真福利在线观看| 精品国产麻豆| 午夜精品一区二区在线观看| 亚洲激情成人| 婷婷激情综合五月天| 久久精品视频网| 国产午夜福利片| 制服丝袜亚洲色图| 国产精品四虎| 97超级碰在线看视频免费在线看| 国产精品一区免费在线| 视频一区在线免费观看| 国产农村妇女精品一区二区| japan高清日本乱xxxxx| 一区在线观看视频| 亚洲影院在线播放| 亚洲精品电影久久久| 女同一区二区免费aⅴ| 91精品久久久久久| 日韩中文字幕高清在线观看| 黄色片久久久久| 99国产精品久久久久久久久久久 | 黑人狂躁日本妞一区二区三区 | 日韩精品在线观看网站| 丁香花在线观看完整版电影| 91精品久久久久久久久| 日韩精品第一区| 一区二区三区 日韩| 久久精品亚洲国产奇米99| 六月丁香婷婷综合| 日韩av在线资源| 999福利在线视频| 古典武侠综合av第一页| 亚洲午夜一区| 亚洲v在线观看| 亚洲综合色视频| 午夜精品久久久久久久91蜜桃| 久久精品一偷一偷国产| 自拍偷拍欧美日韩| 熟妇熟女乱妇乱女网站| 国内精品视频一区二区三区八戒| 91香蕉视频污在线观看| 欧美精品久久久久久久多人混战 | 北条麻妃一区二区三区在线观看| 今天免费高清在线观看国语| 国产一区二区伦理片| 精品一区在线观看视频| 日韩一区二区三区免费看| 一色桃子av在线| 国严精品久久久久久亚洲影视| 亚洲黄色av| 成年人网站免费在线观看| 欧美午夜精品久久久久久人妖| 青青草超碰在线| 国产精品99久久99久久久二8| 日本电影一区二区| 日韩成人av免费| 亚洲精品写真福利| 成人免费一级视频| 欧美野外猛男的大粗鳮| 国产探花一区在线观看| 日本xxxx黄色| 亚洲人成小说网站色在线| 亚洲国产一二三区| 欧美在线亚洲一区| 日韩国产一区二区| 亚洲区 欧美区| 欧美色另类天堂2015| 亚洲成人影院麻豆| 18成人在线| 亚洲深夜av| 欧美大片xxxx| 日韩国产高清视频在线| 九色成人搞黄网站| 狠狠精品干练久久久无码中文字幕 | 色欲久久久天天天综合网| 欧美孕妇与黑人孕交| 日韩在线中文| 一级少妇精品久久久久久久| 色婷婷久久久综合中文字幕| 国产视频中文字幕在线观看| 精品欧美一区二区三区久久久| 日韩电影在线观看电影| 国产盗摄一区二区三区在线| 日韩精品一二三四区| 日本久久二区| 午夜肉伦伦影院| 日韩码欧中文字| 日韩电影免费| 亚洲一区二区三区乱码aⅴ| 裸体一区二区|