原文:HTML解析HtmlAgilityPack

//解析页面源代码
           Uri surl = new Uri(url);
           Uri uriCategory = null;
           HttpWebRequest requst = (HttpWebRequest)WebRequest.Create(url);
           WebResponse response = requst.GetResponse();

           Stream stream = response.GetResponseStream();
           StreamReader read = new StreamReader(stream, Encoding.GetEncoding("gb2312"));
           return read.ReadToEnd();
//定位到需要截取的部分
HtmlAgilityPack.HtmlDocument html = new HtmlAgilityPack.HtmlDocument();
            html.LoadHtml(str);
            HtmlNode rootNode = html.DocumentNode;

            HtmlNodeCollection categoryNodeList = rootNode.SelectNodes("//html[1]/body[1]/div[9]/div[1]/div[1]/div[1]/ul/li");
            HtmlNode temp = null;
            List<Category> list = new List<Category>();
//截取部分循环
foreach (HtmlNode categoryNode in categoryNodeList)
            {
                temp = HtmlNode.CreateNode(categoryNode.OuterHtml);
                HtmlNode singleNode = temp.SelectSingleNode(“//li/a[1]”);
Category category = new Category();
                    category.IndexUrl = singleNode.Attributes["href"].Value.ToString();
                    category.Subject = singleNode.Attributes["title"].Value.ToString();
list.Add(category);
}
public class Category
{
public string Subject { get; set; }
public string IndexUrl { get; set; }
}
////html[1]/body[1]/div[9]/div[1]/div[1]/div[1]/ul/li  截取规则
Articles/Article[1]:选取属于Articles子元素的第一个Article元素。 

/Articles/Article[last()]:选取属于Articles子元素的最后一个Article元素。 
/Articles/Article[last()-1]:选取属于Articles子元素的倒数第二个Article元素。 
/Articles/Article[position()<3]:选取最前面的两个属于 bookstore 元素的子元素的Article元素。 
//title[@lang]:选取所有拥有名为lang的属性的title元素。 
//CreateAt[@type='zh-cn']:选取所有CreateAt元素,且这些元素拥有值为zh-cn的type属性。 
/Articles/Article[Order>2]:选取Articles元素的所有Article元素,且其中的Order元素的值须大于2。 
/Articles/Article[Order<3]/Title:选取Articles元素中的Article元素的所有Title元素,且其中的Order元素的值须小于3。



HTML解析HtmlAgilityPack的更多相关文章

  1. C#代码

    http://www.cnblogs.com/zjfree/category/269738.html 超简易静态Web服务器 C# 生成不重复随机字符串 (1秒内生成1000000个) C# 读写IN ...

  2. 黄聪:C#类似Jquery的html解析类HtmlAgilityPack基础类介绍及运用

    Html Agility Pack下载地址:http://htmlagilitypack.codeplex.com/ Html Agility Pack 源码中的类大概有28个左右,其实不算一个很复杂 ...

  3. HTML解析器HtmlAgilityPack的一些使用总结(C#)

    哎~本来这些总结是作为使用时的快速备注,但是用不上了.实际应用当中HtmlAgilityPack的可靠性不太稳定,一主要问题是:-> 一些字符会出现乱码或者变成'?',如韩语字符.由于我是已经有 ...

  4. 【转】C#类似Jquery的html解析类HtmlAgilityPack基础类介绍及运用

    Html Agility Pack下载地址:http://htmlagilitypack.codeplex.com/ Html Agility Pack 源码中的类大概有28个左右,其实不算一个很复杂 ...

  5. .NET Core HtmlAgilityPack HTML解析利器

    最近学习.NET Core ,想把自己之前的一个项目升级到 .NET Core. 发现HtmlAgilityPack 没法进行引用,遂自己做了些修改,可以运行在 .NET Core 中.现在分享出来, ...

  6. HtmlAgilityPack解析器在WP8.1下报错,不仅如此,社交化分享也报错。

    以前WP7下是用的HtmlAgilityPack和 XPath来解析网页,很好用. 但是在Wp8.1下,这个里面却缺少了一个很重要的方法. HtmlDocument doc = new HtmlDoc ...

  7. HTML解析组件HtmlAgilityPack使用

    HtmlAgilityPack是一个开源的解析HTML元素的类库,最大的特点是可以通过XPath来解析HMTL,如果您以前用C#操作过XML,那么使用起HtmlAgilityPack也会得心应手.目前 ...

  8. 我最优惠网系列(1)——HTML 解析类库HtmlAgilityPack

    0. 序言 在开发我最优惠网的过程中,遇到一些问题和技术点,写出来和大家分享,也是我自己对近期工作的整理和记录,预计会有解析HTML类库.本地缓存.链接跳转和C#中执行js代码技巧等方面. 1. Ht ...

  9. HtmlAgilityPack解析全国区号页面到XML

    需求:完成一个城市和区号的xml配置文件 处理思路:通过HtmlAgilityPack解析一个区号页面,生产xml文件 页面:http://www.hljboli.gov.cn/html/code.h ...

随机推荐

  1. 基于visual Studio2013解决C语言竞赛题之1089牛虎过河

        题目 解决代码及点评 /************************************************************************/ /* ...

  2. 基于visual Studio2013解决C语言竞赛题之1071打印工资

        题目 解决代码及点评 /************************************************************************/ /* ...

  3. 浅析嵌入式Linux系统的构成和启动过程

    在我们的周围,大量的嵌入式设备都是基于Linux系统来构建的,嵌入式Linux与主机Linux相比有着自己的一些特点,本文就嵌入式Linux系统的构成和启动过程做一些总结. 一.嵌入式Linux系统构 ...

  4. C和指针 (pointers on C)——第十章:结构体和联合(上)

    第十章 结构和联合 这个部分先介绍了.运算符,能够供直接訪问,还介绍了->运算符,它取代结构体指针的间接訪问操作(*struct).xxx 这一章新手理解起来不算太难,没有学过操作系统的话理解位 ...

  5. EXT2/EXT3文件系统(一)

    整理自<鸟哥的Linux私房菜>,整理者:华科小涛http://www.cnblogs.com/hust-ghtao/ 1.文件系统概念引入 文件系统是一种存储和组织计算机数据的方法,它使 ...

  6. Python 学习入门(21)—— 线程

    本文介绍了Python对于线程的支持,包括“学会”多线程编程需要掌握的基础以及Python两个线程标准库的完整介绍及使用示例. 1. 线程基础 1.1. 线程状态 线程有5种状态,状态转换的过程如下图 ...

  7. Swift - 浮点数转换成整数(四舍五入与直接截断)

    1,直接截去小数部分转换成整数 使用强制转换会将浮点部分去除,把整数部分转换为整数. 1 var i = Int(23.50) //23 2,四舍五入转换成整数 lroundf是一个全局函数,作用是将 ...

  8. NYOJ 623 A*B ProblemII

    A*B Problem II 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描写叙述 ACM的C++同学有好多作业要做,最头痛莫过于线性代数了.由于每次做到矩阵相乘的时候,大 ...

  9. 贴一个CMemDC 代码,这东西真不错噢,短小精悍,可谓极品

    罗索客 发布于 2006-11-28 21:53 点击:3941次  来自: 原文: http://yuantao82.spaces.live.com/Blog/cns!8FC0A772D812A22 ...

  10. H-index因素

    Problem Description Paper quality and quantity have long been used to measure a research's scientifi ...