c#蜘蛛程序之HTML解析利器HtmlAgilityPack

database2sharp mysql_C# NetCore使用AngleSharp爬取周公解梦数据 MySql数据库的自动创建和页面数据抓取... 这一章详细讲解编码过程那么接下来就是码代码了,GO新建NetCore WebApi项目 空的就可以NuGet安装Install-Package AngleSharp或者界面安装using。。默认本地装有mysql或者有远程开放的mysql数据库,如何安装mysql,园区有很多文章都详细说明。配置文件添加mysql连接 appsettings.json{"Logging": {"LogLevel":... 阅读详情

来自:http://www.189works.com/article-101848-1.html

在以前的项目中对HTML解析的,是采用正则表达式一步步将无关的HTML注释及JS代码部分删除掉,然后再用正则表达式找出需要提取的部分,可以说使用正则表达式来做是一个比较繁琐的过程,特别是对于正则表达式不是很熟悉或者要处理的HTML很复杂的情况下。
现在我们可以用一个.NET下的HTML解析类库HtmlAgilityPack。HtmlAgilityPack是一个支持用XPath来解析HTML的类库,学习了解HtmlAgilityPack的API和XPath非常必要。
HtmlAgilityPack是一个开源的.NET类库,它的主页是http://htmlagilitypack.codeplex.com/,在这里可以下载到最新版的类库及API手册,此外还可以下载到一个用于调试的辅助工具。
XPath简明介绍
XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。
下面列出了最有用的路径表达式:
nodename:选取此节点的所有子节点。 
/:从根节点选取。 
//:从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 
.:选取当前节点。 
..:选取当前节点的父节点。
例如有下面一段XML:
< ?xml version="1.0" encoding="utf-8" ?>
< articles>
http://chebazi.net/showtopic-401.aspx
2011-04-07
http://chebazi.net/showtopic-109.aspx
2010年11月23日
http://chebazi.net/showtopic-396.aspx
2011年06月12日
http://www.iofeng.com/
2007-09-08
< /articles>


针对上面的XML文件,我们列出了带有谓语的一些路径表达式,以及表达式的结果:
/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。


HtmlAgilityPack API简明介绍
在HtmlAgilityPack中常用到的类有HtmlDocument、HtmlNodeCollection、
HtmlNode和HtmlWeb等。
其流程一般是先获取HTML,这个可以通过HtmlDocument的Load()或LoadHtml()来加载静态内容,或者也可以HtmlWeb的Get()或Load()方法来加载网络上的URL对应的HTML。
得到了HtmlDocument的实例之后,就可以用HtmlDocument的DocumentNode属性,这是整个HTML文档的根节点,它本身也是一个HtmlNode,然后就可以利用HtmlNode的SelectNodes()方法返回多个HtmlNode的集合对象HtmlNodeCollection,也可以利用HtmlNode的SelectSingleNode()方法返回单个HtmlNode。
HtmlAgilityPack实战
以http://www.hao123.com/game.htm为列获取下面各项的链接和文字。


using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using HtmlAgilityPack;


public class Category
{
public string Subject { get; set; }
public string IndexUrl { get; set; }
}
public partial class _Default : System.Web.UI.Page
{
private const string CategoryListXPath = "//html[1]/body[1]/div[3]/center[1]/div[1]/table[1]/tr"; //关键点,不同网站分析不同的路径
private const string CategoryNameXPath = "//td/a[1]"; //关键点,不同网站分析不同的路径
private const string ChooseXPath = "//a[1]";
protected void Button1_Click(object sender, EventArgs e)
{
Uri url = new Uri(this.TextBox1.Text.Trim());
Uri uriCategory = null;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
WebResponse response = request.GetResponse();


Stream stream = response.GetResponseStream();
StreamReader read = new StreamReader(stream,Encoding.GetEncoding("gb2312"));
string str = read.ReadToEnd();


HtmlDocument html = new HtmlDocument();
html.LoadHtml(str);
HtmlNode rootNode = html.DocumentNode; 
HtmlNodeCollection categoryNodeList = rootNode.SelectNodes(CategoryListXPath); 
HtmlNode temp = null;
List list = new List(); 
foreach (HtmlNode categoryNode in categoryNodeList)
{ 
temp = HtmlNode.CreateNode(categoryNode.OuterHtml); 
HtmlNode singleNode = temp.SelectSingleNode(CategoryNameXPath);
if(singleNode == null)
continue;
HtmlNodeCollection singleList = temp.SelectNodes(CategoryNameXPath);
foreach(HtmlNode node in singleList)
{
HtmlNode createNode = HtmlNode.CreateNode(node.OuterHtml);
HtmlNode reNode = createNode.SelectSingleNode(ChooseXPath);
if (reNode == null)
continue;
Category category = new Category();
category.Subject = reNode.InnerText;
Uri.TryCreate(url, reNode.Attributes["href"].Value, out uriCategory);
category.IndexUrl = uriCategory.ToString();
list.Add(category); 
} 
}


string re =null;
foreach (Category cate in list)
{ 
re +=string.Format("{1}",cate.IndexUrl,cate.Subject);
}
this.Literal1.Text = string.Format("{0}


", re);
}
protected void Page_Load(object sender, EventArgs e)
{
}
}

5步轻松掌握 AngleSharp:C# HTML 解析库的王者之路 什么是 AngleSharp?AngleSharp 是一个功能强大的 C# 库,用于解析、操作和渲染 HTML 和 XML 文档。它实现了 W3C 的 DOM、CSS 和 HTML 标准,提供了浏览器级别的 HTML 解析功能,支持执行 JavaScript 代码等高级操作。为什么选择 AngleSharp?标准合规:AngleSharp 遵循最新的 W3C 标准,确保解析结果的准确性和一致性。高性能:AngleSharp 采用了高效的解析算法,能够在短时间内处理大量数据。易用性。 阅读详情

相关推荐

C#实现的HTML页面解析网络爬虫实践指南

网络爬虫,又称为网络蜘蛛(Web Spider)或网络机器人(Web Robot),是一种按照一定的规则,自动地抓取万维网信息的程序或脚本。其主要目的是为搜索引擎或其他在线服务搜集数据,构建索引或进行数据挖掘。网络编程是构建能够通过网络进行数据交换的应用程序的过程。在网络编程中,我们关注的是在两个或多个网络节点之间传输数据的机制,这些节点可以是计算机、服务器或任何能够连接到网络的设备。

weixin_30798867的博客 1013

C# Html解析之AngleSharp_C#Dom解析(强烈推荐)

C# Html解析之AngleSharp_C#Dom解析 一、AngleSharp简介 AngleSharp 是一个 .NET 的 HTML 解析器库。支持输出 Javascript、Linq 语法、ID 和 Class 选择器、动态添加节点、支持 Xpath 语法。比HtmlAgilityPack更好用一点。 官网地址:AngleSharp - Documentation 源码地址:https://github.com/AngleSharp/AngleSharp Nuget地址:https://

天马3798 6655

C# 各版本 HtmlAgilityPack 类库 HtmlAgilityPack.dll

C# 各版本 HtmlAgilityPack 类库 HtmlAgilityPack.dll net 2.0 net 3.5 net 4.0

C#爬虫,HttpClient请求,HtmlAgilityPack,HtmlDocument使用

爬虫简介 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 算法分析 网页分析算法可以归纳为基于网络拓扑、基于网页内容和基于用户访问行为三种类型。 拓扑分析算法 基于网页之间的链接,通过已知的网页或数据,来对与其有直接或间接链接关系的对象(可以是网页或网站等)作出评价的算法。又分为网页粒度、网站粒度和网页块粒度这三种。 (1)网页(Webpage)粒度的

weixin_48466684的博客 1505

AngleSharp:AngleSharp是一个.NET库,它使您能够解析基于尖括号的超文本,如HTML,SVG和MathML。该库还支持声明验证的XML。AngleSharp的一个重要方面是CSS也可以被解析。包含这将生成给定源代码的完全可移植的html5-dom表示,并确保与主流浏览器中的结果兼容。同样,标准的DOM特性(如querySelector或querySelector)也适用于树遍历

角度锐利 AngleSharp是一个.NET库,使您能够解析基于尖括号的超文本,例如HTML,SVG和MathML。 该库还支持未经验证的XML。 AngleSharp的一个重要方面是CSS也可以解析。 包含的解析器基于正式的W3C规范构建。 这样可以生成给定源代码的完美可移植HTML5 DOM表示形式,并确保与常绿浏览器中的结果兼容。 标准DOM功能(例如querySelector或querySelectorAll适用于树遍历。 :high_voltage: :high_voltage: 从AngleSharp 0.9迁移到AngleSharp 0.10或更高版本? 查看我们的。 :high_voltage: :high_voltage: 主要特点 可移植(使用.NET Standard 1.3) 符合标准(与常绿浏览器完全一样) 出色的性能(在大多数情况下胜过类似的解析器) 可扩展(通过您自己的服务扩展) 有用的抽象(类型助手,类似于jQuery的构造) 功能齐全的

Moltbot 超详细安装使用教程(初学者版)

你在外面逛街,用微信/Telegram 发消息说"帮我查一下明天的天气"它立刻帮你查好并回复你说"帮我在电脑上新建一个文件夹叫'工作文档'"它真的帮你在电脑上创建了这就是 Moltbot ——一个能真正帮你干活的 AI 助手。API Key 就像是一把"钥匙",让 Moltbot 能够使用 AI 服务。

weixin_51040479的博客 2011

C#写一个采集器、蜘蛛

网上无意之中看到的,很不错,估计以后会用得到,先做个备份~作者:iuhxq from --http://www.svnhost.cn/Article/Detail-116.shtml效果图:代码如下: using System;using System.Collections.Generic;using System.Text;using System.Net;using System.Web;u

372

vue项目基于WebRTC实现一对一音视频通话

vue项目基于WebRTC实现一对一音视频通话。完整代码gitee地址: https://gitee.com/wade-nian/wdn-webrtc.git。

qq_920189602的博客 6647

ASP.NET网络爬虫小研究 HtmlAgilityPack基础,爬取数据保存在数据库中再显示再自己的网页中...

1、什么是网络爬虫 关于爬虫百度百科这样定义的:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。从搜索引擎开始,爬虫应该就出现了,爬虫所做的事情就是分析URL、下载WebServer返回的HTML、分析HTML内容、构建HTTP请求的模拟...

weixin_30845171的博客 344

Imputation Methods for scRNA Sequencing Data

越来越多的研究者使用单细胞RNA测序(scRNA-seq)技术来表征单细胞水平的转录图谱。他们用它来研究复杂组织的异质性、转录组动力学和未知生物的多样性。然而,在基因表达模式随机性的scRNA-seq数据中普遍存在许多技术和生物学上的噪音。这些数据通常具有高维、稀疏和大量“dropout”值的特点,并且受批处理效应的影响。scRNA-seq数据中大量的“dropout”值严重掩盖了基因之间的重要关系,阻碍了下游分析。因此,scRNA-seq数据dropout值的估算就显得尤为重要。

qq_34179307的博客 539

电力电子技术(13)——大功率可控整流电路

目录引言2.6.1 带平衡电抗器的双反星形可控整流电路电路结构的特点接平衡电抗器的原因平衡电抗器使得两组三相半波整流电路同时导电的原理分析谐波分析2.6.2 多重化整流电路概述原理目标1)移相多重联结2)多重联结电路的顺序控制3重晶闸管整流桥顺序控制带平衡电抗器的双反星形可控整流电路(是多重化整流电路的重要形式之一)的特点:适用于低电压、大电流的场合。多重化整流电路的特点:绕组的极性相反的目的:消除直流磁通势如图所示,虽然两组相电流的瞬时值不同,但是平均电流相等而绕组的极性相反,所以直流安匝(电流*匝数)互

weixin_45589295的博客 1万+

爬虫原理和流程

Headerless Browser(无头的浏览器)是浏览器的无界面状态,可以在不打开浏览器GUI的情况下,使用浏览器支持的性能。无头浏览器和嵌入浏览器获取网页源码的原理是一样的,都是使用浏览器打开一个页面,再获取源码。通过使用不同的浏览器驱动,可以支持不同的浏览器,包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等. 优点是可以获取动态页面,而且可以模拟鼠标点击,拖动等操作。在C#中,可以使用以下方式来提取网页信息。

super_mo的博客 1116

【自用】吉林大学计算机系统结构第二章:缓存优化 曲冠南老师版 笔记

容量8KB,2的十三次方,块大小16B,一块用掉四位,剩余2的九次方是标志位,则有512行,每个元素8B,则一块两个元素,a数组150块,b数组152块,不出现容量失效。不管是否交换内容,在同一“伪相联”组中的两块都是用同一个索引得到的,因此失效率相同,即:失效率伪相联=失效率2路。伪相联cache的命中时间等于直接映象cache的命中时间加上伪相联查找过程中的命中时间*该命中所需的额外开销。(6) 由编译器控制的预取,硬件预取的替代方法,在编译时加入预取的指令,在数据被用到之前发出预取请求。

weixin_73587775的博客 1614

c# html解析框架HtmlAgilityPack、AngleSharp、NSoup

【代码】c# html解析框架HtmlAgilityPack、AngleSharp、NSoup。

wpyok168的博客 1055

层层剖析,让你彻底搞懂Self-Attention、MultiHead-Attention和Masked-Attention的机制和原理

本文内容 本文基于李宏毅老师对 Self-Attention 的讲解,进行理解和补充,并结合Pytorch代码,最终目的是使得自己和各位读者更好的理解Self-Attention 李宏毅Self-Attention链接: https://www.youtube.com/watch?v=hYdO9CscNes PPT链接见视频下方 通过本文的阅读,你可以获得以下知识: 什么是Self-Attention,为什么要用Self-Attention? Self-Attention是如何做的? Self-Atten

iioSnail的博客 2万+

智能车图像处理14-进阶篇6--坡道的判定

这篇文章主要讲述智能车图像处理中 : 如何判断坡道

taiyuezyh的博客 9218

htmlagilitypack_浅谈 AngleSharp 与 htmlagilitypack 的一些区别

AngleSharp 文档中的一些说法The Html Agility Pack (HAP) is a good comparison target, since it is most used and established since a long time. Obviously AngleSharp is a great replacement for HAP due to the fo...

weixin_39854288的博客 464

数据库课程案例——电力公司收费管理系统分析与实践,完整带SQL语句

某电力公司收费管理信息系统实现客户信息、用电类型(类别号、类别名、电价)及业务员管理;实现客户用电信息管理(客户号、月份、用电类别号、用电度数);实现客户费用管理(客户号、月份、费用、收费标志),收费标志的默认值为“未收”;实现收费登记(客户、月份、应收费用、实收费用、业务员),并自动修改收费标志(用触发器实现);创建触发器,实现收费时自动更加应收费用和实收费用,计算本次结余,然后修改客户信息表中的结余金额;创建存储过程统计指定月份应收费用和实收费用;创建存储过程查询指定月份未交费的用户信息,以便崔费;创建

qq_44242804的博客 2761

C# NetCore使用AngleSharp爬取周公解梦数据

这一章详细讲解编码过程 那么接下来就是码代码了,GO 新建NetCore WebApi项目 空的就可以 NuGet安装 Install-Package AngleSharp   或者界面安装 using。。 默认本地装有mysql或者有远程开放的mysql数据库,如何安装mysql,园区有很多文章都详细说明。 配置文件添加mysql连接 appset...

weixin_30896763的博客 323

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

AngleSharp :在 C# 中轻松解析和操作 HTML/XML 文档

AngleSharp 是一个 C# 库,主要用于解析和操作 HTML 和 XML 文档,类似于浏览器的 DOM 操作。允许你在 C# 中使用类似浏览器的方式处理网页数据,进行网页抓取、数据提取和处理等任务。安装第一步,老规矩,先安装使用解析 HTML 文档。

混迹自留地 826

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

c#爬虫之HtmlAgilityPack页面解析

C#爬虫页面解析问题对于作者我刚开始时来说是比较苦恼,一般页面解析有三种方式:1.作为字符串进行分割(缺点是过于麻烦不好区分相同的标签等问题),2.使用正则表达式(缺点作者使用并不熟练虽然看别人用的很简单但是自己总是用着不是那么的得心应手),3.使用HtmlAgilityPack解析方法。https://html-agility-pack.net/manipulation HtmlAgilityP...

weixin_43830924的博客 1182

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C# 使用AngleSharp 爬虫图片

AngleSharp 简介 AngleSharp是基于.NET(C#)开发的专门解析HTML源码的DLL组件。根据HTML的DOM结构操作HTML,整个DOM已传输到逻辑类结构中。这种结构可以更好的操作DOM元素。 AngleSharp还带来了一些非常有用的扩展方法,它们跟jQuery和JavaScript中的用法类似。 使用命名空间AngleSharp可以访问Html,Css,Attr或Te...

weixin_30632899的博客 355
上一篇: sql server表中timestamp类型的具体说明
下一篇: 通过HtmlAgilityPack实现网页信息抓取
ArvinStudy
博客等级 码龄15年 83粉丝 193原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值