浅谈C#解析网页

最近做了一个项目,要求获取各大主流网页上的关键信息,本人以前了解过网页爬虫的知识,所以想到了网页爬虫了实现功能

第一次尝试:

采用webclient获取远程网页的内容,然后采用正则表达式进行过滤

但,由于正则表达式对我来说,书写起来比较复杂,研究个大半个月,一点进展都没有,每天看着正则表达式像看天书(回头需要向正则牛逼的人请教一下)

第一次尝试失败,项目马上就要验收了,这个功能一直卡壳了,,,,,,,,

 

突然有一次,在网上看到了有人提及到了HtmlAgilityPack这个开源的工具包,本想着试一下的态度(因为我对这个网页解析已经不抱有希望了)

仅仅有了几行的代码,居然跟我的需求一样实现了,万分高兴(此处使用HtmlAgilityPack需要学习一下xpath的一点知识,不过那些都很简单,比起正则太easy了)

好了,废话不多说,上代码

 

1、去官网上下载一个HtmlAgilityPack包,地址:http://htmlagilitypack.codeplex.com/

2、根据自己项目的.net版本,选择适合的版本,引入项目

3、开始写代码了

HtmlAgilityPack基本跟所有的类一样,直接使用里面的方法和属性就行,具体可以参考官网

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//获取网页指定内容
        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就完全按照自己的要求解析出来了网页上的任何你想要的,是不是很神奇~~

posted @   成神之路~  阅读(5226)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示