简介

本文介绍net处理html页面元素的工具类(HtmlAgilityPack.dll)的使用,用途比较多的应该是例如采集类的功能,采集到的html字符串要怎样处理是一个头痛的问题,如果是截取就太麻烦了而且容易出错。所有就用到本文的第三方dll来处理了。

下载

下载地址:http://htmlagilitypack.codeplex.com/

点击“download”按钮直接下载。

使用

1.添加HtmlAgilityPack.dll引用(引用类using HtmlAgilityPack;)。

2.简单根据html中input的id获取value代码如下:

// 模拟用户请求
WebClient webClient = new WebClient();
webClient.Encoding = System.Text.Encoding.UTF8;
string htmlContext = webClient.DownloadString("http://stone_w.cnblogs.com/");
webClient.Credentials = CredentialCache.DefaultCredentials; // 添加授权证书
webClient.Headers.Add("User-Agent", "Microsoft Internet Explorer");
webClient.Headers.Add("Host", "www.cnblogs.com"); // 获取html元素(htmlContext为html页面字符串)
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(htmlContext); // 加载html页面
HtmlNode navNode = htmlDoc.GetElementbyId("id名称");
Response.Write(navNode.Attributes["value"].Value);

总结

HtmlAgilityPack可以根据id查询value,还可以获取单个元素节点,都是HtmlDocument类的内置方法,大家可以试着练练。谢谢完~

获取超级链接

HtmlWeb webClient = new HtmlWeb();
HtmlDocument doc = webClient.Load("http://xxx"); HtmlNodeCollection hrefList = doc.DocumentNode.SelectNodes(".//a[@href]"); if (hrefList != null)
{
foreach (HtmlNode href in hrefList)
{
HtmlAttribute att = href.Attributes["href"];
doSomething(att.Value); } }

搜集到的第三个

这里推荐一个不错的DLL 叫HtmlAgilityPack.dll,它不基于mshtml,轻松解析HTML代码,这对做采集软件来说是很不错的选择,使用非常简单:

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

   Dim wc As WebClient = New WebClient
            Dim ms As MemoryStream = New MemoryStream(wc.DownloadData(url))
            '预读HTML
            Dim hdoc As HtmlDocument = New HtmlDocument
            hdoc.Load(ms, Encoding.UTF8)

'股票编号
            arr(0) = hdoc.DocumentNode.SelectSingleNode("/html[1]/body[1]/div[1]/div[1]/div[3]/div[2]/div[1]/div[1]").InnerText

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

其中 /html[1]/body[1]/div[1]/div[1]/div[3]/div[2]/div[1]/div[1] 是你要采集的xPath,这个有点像DOMhtml,HtmlAgilityPack 也提供了相应的工具软件来获取这个值,但似乎开发者似乎不怎么了解winform,软件容易崩溃...

HtmlAgilityPack.dll的使用 获取HTMLid的更多相关文章

  1. Net处理html页面元素工具类(HtmlAgilityPack.dll)的使用

    现在,在不少应用场合中都希望做到数据抓取,特别是基于网页部分的抓取.其实网页抓取的过程实际上是通过编程的方法,去抓取不同网站网页后,再进行 分析筛选的过程.比如,有的比较购物网站,会同时去抓取不同购物 ...

  2. 处理html页面元素工具类(HtmlAgilityPack.dll)的使用

    下载地址:http://htmlagilitypack.codeplex.com/ 1.添加HtmlAgilityPack.dll引用(引用类using HtmlAgilityPack;). 2.简单 ...

  3. 从加载DLL的中获取放置于Resources文件夹中资源字典的几种方法

    原文:从加载DLL的中获取放置于Resources文件夹中资源字典的几种方法 主程序 为 Main_Test.exe 被加载的DLL 为 Load_Test.dll  此DLL 中 有一个 文件夹Re ...

  4. HtmlAgilityPack中使用xpath获取属性值

    HtmlAgilityPack介绍 HtmlAgilityPack是一个专门用来解析Html的库,它可以使用xml的方式来解析html. 有人说了,html本身不就是xml?是的,html就是xml, ...

  5. 爬虫技术 -- 进阶学习(九)使用HtmlAgilityPack获取页面链接(附c#代码及插件下载)

    菜鸟HtmlAgilityPack初体验...弱弱的代码... Html Agility Pack是一个开源项目,为网页提供了标准的DOM API和XPath导航.使用WebBrowser和HttpW ...

  6. 爬虫技术(六)-- 使用HtmlAgilityPack获取页面链接(附c#代码及插件下载)

    菜鸟HtmlAgilityPack初体验...弱弱的代码... Html Agility Pack是一个开源项目,为网页提供了标准的DOM API和XPath导航.使用WebBrowser和HttpW ...

  7. 获取DLL的文件路径以及调用DLL的文件路径

    如何在DLL中,获取DLL本身的路径以及调用DLL的文件的路径呢?主要通过GetModuleFileName(HMODULEhModule,LPTSTR lpFilename,DWORD nSize) ...

  8. 当程序调用dll时获取dll路径,DLL中获取自身的句柄

    当程序调用dll时,获取dll路径的方法: HMODULE hMod = GetModuleHandle(_T("axload.dll")); if (hMod != NULL) ...

  9. C#读取DLL文件获取所有类

    说明 调用Web.dll 文件,获取其中的所有的WebService 参考 https://blog.csdn.net/huoliya12/article/details/78873123 流程 使用 ...

随机推荐

  1. 【LeetCode】226 - Invert Binary Tree

    Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9          to 4 / \ 7 2 / \ / \ 9 6 3 1   Notice: Goog ...

  2. leetcode:Integer to Roman(整数转化为罗马数字)

    Question: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the rang ...

  3. 14个最受欢迎的Python开源框架

    本文从GitHub中整理出的14个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python Web应用开发框架 Dja ...

  4. c/c++工程中外部头文件及库添加方法

    在VS工程中,添加c/c++工程中外部头文件及库的基本步骤: 1.添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录. 2.添加文件引用 ...

  5. MySQL Order By Rand()效率

    最近由于需要大概研究了一下MYSQL的随机抽取实现方法.举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RA ...

  6. QS之Intro

    公司里用Questa Sim做仿真,其实跟ModelSim差不多,总结常用的命令如下. 1 启动 vsim -gui 2 编译 -- VCOM vcom [-2008 | -2002 | -93 | ...

  7. 一行 Python 实现并行化 -- 日常多线程操作的新思路

    春节坐在回家的火车上百无聊赖,偶然看到 Parallelism in one line 这篇在 Hacker News 和 reddit 上都评论过百的文章,顺手译出,enjoy:-) http:// ...

  8. 【Python学习笔记】字符串操作

    字符串的表示 python中的字符串是一个常量,可以使用单引号'',双引号""或三引号""" """来创建一个字符串常量 ...

  9. make subversion时出现neon报错 及 svn其他问题汇总(3ge )

    在make subvision时,出现以下错误提示: /usr/local/src/neon-0.29.6/src/ne_auth.c:781: undefined reference to`ne__ ...

  10. [POJ] #1006# Biorhythms : 最小公倍数/同余问题

    一. 题目 Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 127263   Accepted: 403 ...