最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
asp.net中HtmlAgility读取网页、获取数据、id例子
时间:2022-06-25 03:42:40 编辑:袖梨 来源:一聚教程网
该篇学习它的解析功能,还可以模拟用户请求,创建html,设置代理等等,暂先不研究。
入门代码:
代码如下 | 复制代码 |
using System; |
2.读取
那么,如果是载入本地的Html或者直接读流,字符串。可以这么做
代码如下 | 复制代码 |
HtmlDocument doc = new HtmlDocument(); doc.Load(@"D:xxx.mht", Encoding.UTF8, false); |
public void LoadHtml(string html);//直接读字符串化的htmlpublic 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查看
取属性
代码如下 | 复制代码 |
doc.Attributes["id"]; 取元素 |
补充
HtmlAgilityPack类库用法
1、首先需要获取到html页面数据,可以通过WebRequest类来获取
代码如下 | 复制代码 |
public static string GetHtmlStr(string url) |
2、通过HtmlDocument类加载html数据
代码如下 | 复制代码 |
if(aa != null) |
也可以通过HtmlWeb类来获得HtmlDocument
代码如下 | 复制代码 |
HtmlWeb web = new HtmlWeb(); HtmlAgilityPack.HtmlDocument doc = web.Load(url); HtmlNode rootnode = doc.DocumentNode; |
补充:
多个属性条件查询//div[@align='center' and @]
不存在class属性 //div[not(@class)]
相关文章
- 《下一站江湖2》剑术突破方法 05-08
- 《剑星》废品平原全收集攻略 05-08
- 《辐射4》传说级怪物代码介绍 05-08
- 《下一站江湖2》诛尽杀绝化境卷获得方法 05-08
- 《剑星》无限之刃成就攻略 05-08
- 《辐射4》快速升级方法 05-08