HTML解析HtmlAgilityPack

原文: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。

时间: 2025-01-30 14:51:03

HTML解析HtmlAgilityPack的相关文章

html解析-HtmlAgilityPack 怎么正确提取包含小于号“&amp;amp;lt;”等类似html标签符号的内容?

问题描述 HtmlAgilityPack 怎么正确提取包含小于号"<"等类似html标签符号的内容? [原始html] <table width="770" border="0" cellpadding="0" cellspacing="0"> <tr> <td class="even" width="640" valign=&qu

HtmlAgilityPack解析问题

问题描述 ​http://221.226.28.67:88/jsswxxSSI/Web/Default.html?m=2这个网页,我想解析网页中的table中的内容,为什么使用doc.DocumentNode.SelectNodes("//tbody[id='tb1']")为null呢?求大神帮忙

[置顶]C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子)

第一次接触HtmlAgilityPack是在5年前,一些意外,让我从技术部门临时调到销售部门,负责建立一些流程和寻找潜在客户,最后在阿里巴巴找到了很多客户信息,非常全面,刚开始是手动复制到Excel,是真尼玛的累,虽然那个时候C#还很菜,也想能不能通过程序来批量获取(所以平时想法要多才好).几经周折,终于发现了HtmlAgilityPack神器,这几年也用HtmlAgilityPack采集了很多类型数据,特别是足球赛事资料库的数据采集以及天气数据采集,都是使用HtmlAgilityPack,所以

wIndows phone 7 解析Html数据

原文:wIndows phone 7 解析Html数据 在我的上一篇文章中我介绍了windows phone 7的gb2312解码, http://www.cnblogs.com/qingci/archive/2011/11/25/2263124.html 解决了下载的Html乱码问题,这一篇,我将介绍关于windows phone 7解析html数据,以便我们获得想要的数据. 这里,我先介绍一个类库HtmlAgilityPack,(上一篇文章也是通过这个工具来解码的). 类库的dll文件我会随

HTML Agility Pack 搭配 ScrapySharp,彻底解除Html解析的痛苦

自从 Web 应用程序自 1993 年 W3C 设立以来就开始发展,而且 HTML 也历经了数个版本的演化(1.0 – 2.0 – 3.0 – 3.2 – 4.0 – 4.01),现在也已经成为Web网页或应用程序的最基础,想要学习如何设计 Web 网页或开发 Web 应用程序,这已经是绝对必须要学的东西了,就算是方便的控件(例如 ASP.NET),但 HTML 仍然有学习它的必要性,因此如果不会 HTML,就等于没学过 Web 网页一般. 拜 HTML 与 Web 浏览器蓬勃发展之赐,各式各样

c#中的jQuery——HtmlAgilityPack

原文:c#中的jQuery--HtmlAgilityPack c#中是否有javascript中的jQuery类库? jQuery在访问和操作HTML 的DOM的便捷是前端开发工程师的一种福音,在c#语言里,能否像jQuery那样便捷的访问和操作HTML呢?Html Agility Pack是一个不错的可选工具. Html Agility Pack是codeplex里的一款开源库(http://htmlagilitypack.codeplex.com/),是一个灵活的html解析器,支持通过简单

windows phone 7,sliverlight 下载网页的解析,关于wp7 gb2312编码

原文:windows phone 7,sliverlight 下载网页的解析,关于wp7 gb2312编码 关于silverlight和wp7(windows phone 7)是默认不支持gb2312解码的, 所以从网上下载的Html大部分都是乱码. 例如:http://news.sina.com.cn/s/2011-11-25/120923524756.shtml 下面是演示一个wp7程序 1 WebClient webClenet=new WebClient(); 2 webClenet.D

解析xHTML源码的DLL组件AngleSharp介绍_实用技巧

AngleSharp是基于.NET(C#)开发的专门为解析xHTML源码的DLL组件. 项目地址:https://github.com/FlorianRappl/AngleSharp 国内:Jumony github地址: https://github.com/Ivony/Jumony 国外:Html Agility Pack 项目地址:http://htmlagilitypack.codeplex.com/ 具体大家可以自行搜索对比三者的区别和性能.接下来咱们主要讨论主角是AngleSharp

多线程用mshtml解析html时,内存暴涨,程序中断,如何处理?

问题描述 在做一个抓取工具,使用htmlagilitypack解析时不会出现该错误,换用mshtml后开了多线程内存占用很快就跳到了1G+,随后就程序中断,是不是我在用mshtml解析html后需要主动释放什么资源,求指点voidGrabPaperByVIPWebClient(objecto){VIP.Model.Phasephase=oasVIP.Model.Phase;if(phase==null)return;VIPWebClientwc=newVIPWebClient();if(IsUr