首页 > 代码库 > 浅谈C#解析网页
浅谈C#解析网页
最近做了一个项目,要求获取各大主流网页上的关键信息,本人以前了解过网页爬虫的知识,所以想到了网页爬虫了实现功能
第一次尝试:
采用webclient获取远程网页的内容,然后采用正则表达式进行过滤
但,由于正则表达式对我来说,书写起来比较复杂,研究个大半个月,一点进展都没有,每天看着正则表达式像看天书(回头需要向正则牛逼的人请教一下)
第一次尝试失败,项目马上就要验收了,这个功能一直卡壳了,,,,,,,,
突然有一次,在网上看到了有人提及到了HtmlAgilityPack这个开源的工具包,本想着试一下的态度(因为我对这个网页解析已经不抱有希望了)
仅仅有了几行的代码,居然跟我的需求一样实现了,万分高兴(此处使用HtmlAgilityPack需要学习一下xpath的一点知识,不过那些都很简单,比起正则太easy了)
好了,废话不多说,上代码
1、去官网上下载一个HtmlAgilityPack包,地址:http://htmlagilitypack.codeplex.com/
2、根据自己项目的.net版本,选择适合的版本,引入项目
3、开始写代码了
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 = http://www.mamicode.com/webclient.DownloadData(htmlpath);"//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就完全按照自己的要求解析出来了网页上的任何你想要的,是不是很神奇~~
浅谈C#解析网页
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。