HtmlAgilityPack的基本介绍、使用、实际代码、采集分析过程
优采云 发布时间: 2021-04-24 02:33HtmlAgilityPack的基本介绍、使用、实际代码、采集分析过程
我第一次联系HtmlAgilityPack是5年前。某些意外使我暂时从技术部门转到销售部门,负责建立一些流程并寻找潜在的客户。最终,我在阿里巴巴上找到了很多客户信息,这些信息非常全面。一开始,我手动将其复制到Excel,这确实很累。尽管当时的C#仍然非常出色,但我想知道是否可以通过程序批量获取它(因此我通常会有更多想法)。经过几番周折,我终于发现了HtmlAgilityPack工件。近年来,我还对许多类型的数据使用了HtmlAgilityPack 采集,尤其是足球比赛数据库数据采集和天气数据采集。两者都使用HtmlAgilityPack,所以我把自己的使用过程进行了总结并与所有人共享,以便更多的人可以联系和学习使用,并将遍历引入自己的工作中。
今天的主要内容是HtmlAgilityPack的基本介绍,使用和实际代码。最后,我们以采集天气数据为例,介绍实际的采集分析过程和简单代码。在下一篇文章文章中,我们将开源天气数据库和C#操作代码。 采集此处仅介绍了核心,实际上,核心代码可用,您可以自己处理它,并且对于有需要的人来说也是免费的。有关详细信息,请注意下一篇文章文章。
.NET开源目录:[b13]此博客中的[.net]其他.NET开源项目的目录文章
本文的原创地址:C#+ HtmlAgilityPack + XPath带您采集数据(以采集天气数据为例)
1. HtmlAgilityPack简介
HtmlAgilityPack是一个用于解析HTML元素的开源库。最大的功能是您可以通过XPath解析HMTL。如果您以前使用C#来处理XML,那么HtmlAgilityPack将非常方便。当前的最新版本为1. 4. 6,下载地址如下:当前的稳定版本为1. 4. 6,最新更新为2012年,因此非常稳定,功能全面。基本功能,无需更新。
当您提到HtmlAgilityPack时,您必须引入一个辅助工具。我不知道其他人在使用时如何分析页面结构。无论如何,我使用一个称为HAPExplorer的官方工具。很有用。下面我们将介绍如何使用它。
2. XPath技术的介绍和使用2. 1个XPath的介绍
XPath是XML路径语言,它是一种用于确定XML(标准通用标记语言的子集)文档某些部分位置的语言。 XPath基于XML树结构,并提供了在数据结构树中查找节点的功能。最初,XPath的初衷是将其用作XPointer和XSL之间的通用语法模型。但是XPath被开发人员迅速用作一种小型查询语言。
XPath是W3C的标准。其主要目的是在XML 1. 0或XML 1. 1文档节点树中定位节点。当前有两个版本,XPath 1. 0和XPath 2. 0。其中,Xpath 1. 0于1999年成为W3C标准,XPath 2. 0标准于2007年建立。有关XPath的英文详细W3C文档,请参见:。
2. 2 XPath路径表达式
XPath是XML的查询语言,其作用与SQL非常相似。以以下XML为例,介绍XPath的语法。以下信息来自几年前我从Internet和博客园获得的信息。我暂时找不到来源。示例和文本基本上仅供参考。再次感谢你。如果您发现类似的内容文章,请告诉我该链接,我将添加一个参考。下面Xpath的相关表达式也非常基础,基本上就足够了。
Empire Burlesque
Bob Dylan
10.90
定位节点:XML是树形结构,类似于文件系统中数据文件夹的结构,XPath也类似于文件系统的路径命名方法。但是,XPath是一种模式,可以选择XML文件中其路径与某个模式匹配的所有节点。例如,如果要在目录下的CD中选择所有价格元素,则可以使用:
/catalog/cd/price
如果XPath的开头是斜杠(/),则表示它是绝对路径。如果开头有两个斜杠(//),则意味着将选择文件中所有与模式匹配的元素,即使在树中的不同级别也是如此。以下语法将选择文件中所有名为cd的元素(将选择树中的任何级别):// cd
选择未知元素:使用星号(*)选择未知元素。以下语法将选择/ catalog / cd的所有子元素:
/catalog/cd/*
以下语法将选择目录的所有子元素,其中收录价格作为子元素。
/catalog/*/price
以下语法将选择具有两个父节点级别(称为价格)的所有元素。
/*/*/price
应该注意,如果要访问非分层元素,则XPath语法必须以两个斜杠(//)开头。如果要访问未知元素,请使用星号(*)。星号仅可以表示名称未知的元素,而不能表示级别未知的元素。
选择一个分支:使用方括号选择一个分支。以下语法从目录的子元素中提取称为cd的第一个元素。 XPath的定义中没有第0个元素。
/catalog/cd[1]
以下语法选择目录中的最后一个cd元素:(XPathj没有定义first()函数。在上例中使用[1]提取第一个元素。
/catalog/cd[last()]
以下语法选择价格元素值等于1 0. 90的所有/ catalog / cd元素
/catalog/cd[price=10.90]
选择属性:在XPath中,除了选择元素之外,您还可以选择属性。所有属性均以@开头。例如,在文件中选择所有名为country的属性:
//@country
以下语法选择国家属性值为UK的cd元素
//cd[@country='UK']
3. 采集天气网站案例3. 1需求分析
我们想要的采集是全国城市的天气信息,网站是:网站数据分为两种类型,一种是历史数据,覆盖范围是从2011年到现在,以及另一个是天气预报数据,历史数据是后报告的天气,即实际的天气数据。 采集的范围必须涵盖全国主要城市,最好是所有城市。通过分析网站的页面,它确实满足要求。天气信息,包括实际天气状况,风况和温度状况,包括最小和最大间隔。
结合基本要求,我们输入网站来分析一些常规功能和主页结构。
3. 2 网站页面结构分析
对于采集大量信息,必须对网站页面进行详细的分析和总结。因为机器采集不是手动的,所以它需要动态构造URL,请求或页面html,然后对其进行解析。因此,分析网站页面结构是第一步,也是关键步骤。我们首先进入总历史记录页面:,如下所示:
<p>很明显,此常规页面按省划分。您可以看到每个省和地级市名称的链接都是固定格式的,但是拼音的缩写是不同的。每个省的第一个城市是首都。在这一点上,我们应该注意区分省会城市和其他地级城市的程序。当然,省会城市也可以省略,毕竟只有30多个,而且手工标记也非常快。在此页面上,我们将主要采集个省的缩写信息,然后选择一个省,单击它以查看每个省的特定城市信息,例如,我们选择辽宁省:如下图所示: