HTML解析利器-HtmlAgility学习

简介: 原文:HTML解析利器-HtmlAgility学习HtmlAgility是一个开源的Html解析库,据说是C#版的JQuery,功能非常强大。 该篇学习它的解析功能,还可以模拟用户请求,创建html,设置代理等等,暂先不研究。
原文: HTML解析利器-HtmlAgility学习

HtmlAgility是一个开源的Html解析库,据说是C#版的JQuery,功能非常强大。

该篇学习它的解析功能,还可以模拟用户请求,创建html,设置代理等等,暂先不研究。

 

 

----------------------------------------------------------------------------

1.简单例子

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;

using HtmlAgilityPack;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            HtmlWeb webClient = new HtmlWeb();
            HtmlDocument doc = webClient.Load("http://www.baidu.com");
            var rootNode = doc.DocumentNode;
            HtmlNodeCollection categoryNodeList = rootNode.SelectNodes("//html[1]/body[1]");
            foreach (var item in categoryNodeList)
            {
                Console.WriteLine("item: " + item.Name);
            }

            Console.Read();
        }
    }
}

算是第一个Hellow world,扒的百度页面。

----------------------------------------------------------------------------

2.读取

那么,如果是载入本地的Html或者直接读流,字符串。可以这么做

HtmlDocument doc = new HtmlDocument();
doc.Load(@"D:\xxx.mht", Encoding.UTF8, false);

 

public void LoadHtml(string html);//直接读字符串化的html
public void Load(Stream stream);//
public void Load(string path);//本地路径

 

HtmlDocumen其本身也提供检测编码的方法。

HtmlWeb主要是自动检测编码,如果要自定义编码可以改其中属性。OverrideEncoding, AutoDetectEncoding。而HtmlDocument对编码的操作反而不一样,指定在参数中,估计是自动检测编码已经很强大了把,很少要自己指定。。。。

 

----------------------------------------------------------------------------

3.节点选择

rootNode.SelectNodes
rootNode.SelectSingleNode

选择节点和选择单个节点。

用SelectNodes为例,看一下参数

rootNode.SelectNodes("//html[1]/body[1]");

"//"双斜杠表示从根节点查找所有子节点

"/"单斜杠表示只查找第一层子节点

"./"点斜杠表示从当前节点开始查找

 

[]中括号中的代表相同名字的子节点索引。

var resultList = rootNode.SelectNodes("//html[1]/body[1]/div[1]/div[position()<5]");//取前4个元素
resultList = rootNode.SelectNodes("//html[1]/body[1]/div[1]/div[last()]");//取最后1个元素
resultList = rootNode.SelectNodes("//html[1]/body[1]/div[1]/div[@id]");//取所有有id属性的元素
resultList = rootNode.SelectNodes("//html[1]/body[1]/div[1]/div[@id='head']");//取属性id值为head的元素

更多属性可以在W3SCHOOL查看http://www.w3school.com.cn/xpath/xpath_functions.asp

 

 取属性

doc.Attributes["id"];

 取元素

doc.GetElementbyId("id");

 

 

目录
相关文章
|
1月前
|
JavaScript 前端开发 数据可视化
html解析过程
html解析过程【2月更文挑战第26天】
22 6
|
1月前
|
XML 前端开发 数据格式
请描述如何使用`BeautifulSoup`或其他类似的库来解析 HTML 或 XML 数据。
【2月更文挑战第22天】【2月更文挑战第67篇】请描述如何使用`BeautifulSoup`或其他类似的库来解析 HTML 或 XML 数据。
|
3月前
|
存储 数据安全/隐私保护
走进HTML学习二
走进HTML学习二
|
2月前
|
存储 移动开发 前端开发
HTML新特性【HTML5内联SVG、SVG_矩形、SVG 与 Canvas两者间的区别 、HTML5_MathML 】(三)-全面详解(学习总结---从入门到深化)
HTML新特性【HTML5内联SVG、SVG_矩形、SVG 与 Canvas两者间的区别 、HTML5_MathML 】(三)-全面详解(学习总结---从入门到深化)
48 0
|
3月前
|
数据处理 Python
Python学习:迭代器与生成器的深入解析
Python学习:迭代器与生成器的深入解析
21 0
|
18天前
|
前端开发 JavaScript
HTML深度解析:更改文本颜色
【4月更文挑战第1天】
40 0
HTML深度解析:更改文本颜色
|
1月前
|
XML 存储 JavaScript
深入学习 XML 解析器及 DOM 操作技术
所有主要的浏览器都内置了一个XML解析器,用于访问和操作XML XML 解析器 在访问XML文档之前,必须将其加载到XML DOM对象中 所有现代浏览器都有一个内置的XML解析器,可以将文本转换为XML DOM对象
72 0
|
1月前
|
前端开发 搜索推荐 JavaScript
编程笔记 html5&css&js 001 学习编程从网页开始
编程笔记 html5&css&js 001 学习编程从网页开始
|
2月前
|
前端开发 JavaScript
从零开始学习前端开发:HTML、CSS、JavaScript入门指南
【2月更文挑战第1天】本文将带领读者从零开始学习前端开发,介绍HTML、CSS和JavaScript的基础知识与应用,帮助读者快速入门前端开发领域。
64 1
|
3月前
|
XML JavaScript 前端开发
走进HTML学习一
走进HTML学习一

推荐镜像

更多