Html agility pack 需要一些关于HTML敏捷包入门的说明吗

Html agility pack 需要一些关于HTML敏捷包入门的说明吗,html-agility-pack,Html Agility Pack,我的背景: 当涉及到HTML清理时,我是一个新手。自从我用C#for html编写代码以来,已经有大约四年的时间了。不久前,我用C#编写的另一个代码是表单操作SQL Server数据库中的数据 我如何尝试开始使用HTML敏捷包(HAP): 我花了几天时间试图理解从各种在线资源中找到的关于如何开始使用HTML Agility Pack的说明。到目前为止,我发现的一些情况如下: www.4guysfromrolla.com/articles/011211-1.aspx olussier.net/2

我的背景

当涉及到HTML清理时,我是一个新手。自从我用C#for html编写代码以来,已经有大约四年的时间了。不久前,我用C#编写的另一个代码是表单操作SQL Server数据库中的数据

我如何尝试开始使用HTML敏捷包(HAP)

我花了几天时间试图理解从各种在线资源中找到的关于如何开始使用HTML Agility Pack的说明。到目前为止,我发现的一些情况如下:

  • www.4guysfromrolla.com/articles/011211-1.aspx
  • olussier.net/2010/03/30/easy-parse-html-documents-in-csharp/
  • stackoverflow.com/questions/846994/how-to-use-html-agility-pack
  • shatalov.su/en/articles/web/parser_1.php
  • 下面还有更多内容
我目前的结果

我发现这些材料相当混乱,每个来源似乎告诉我一些不同的东西。我所有的尝试都走到了尽头


因此,您可以有效地整理我的困惑,并回答我的具体情况,我将在下面的三个部分中描述我的项目、我的环境和我的问题

我的项目

我的任务是创建一个从html文件中删除数据的过程。我对档案很熟悉。这些文件将驻留在计算机本地的文件系统上。html文件将由我们不拥有的进程在其他地方创建,并将放置在我刚才提到的本地文件夹中。(仅供参考-虽然这不是我问题的一部分,但我希望创建一个项目或应用程序,该项目或应用程序将按计划运行,以执行清理任务,然后将收集的数据输入数据库表。)

我的环境

如上所述,要处理的html文件将驻留在本地计算机上。 我在这台机器上新安装了VisualStudio2010 Professional来为这个项目编码。 HTML Agility Pack现在可以通过文件共享访问此计算机

在REGEIT:HKEY\u LOCAL\u MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP下列出了以下内容,指示此计算机上安装的.NET Framework版本

  • CDF
  • V2.0.50727
  • V3.0
  • V3.5
  • V4
  • V4.0
我的问题

1.)一些网站告诉我下载HTML Agility Pack并使用文件“HtmlAgilityPack.dll”,但是zip文件包含九个文件夹,每个文件夹都有该文件的不同副本。我想要哪一个

以下是文件夹的名称

  • Net20
  • 网络40
  • Net40客户端
  • 网络45
  • sl3可湿性粉剂
  • sl4
  • sl4-windowsphone71
  • sl5
  • winrt45
2.)stackoverflow.com/questions/846994/How-to-use-HTML-Agility-Pack上对论坛问题“如何使用HTML Agility Pack”的回答指示提问者“下载并构建HTML Agility Pack解决方案”,并将提问者引导至网站htmlagilitypack.codeplex.com,该网站随后链接到nuget.org/packages/htmlagilitypack,该链接表示通过在“Package Manager控制台”中运行命令“PM>install Package htmlagilitypack”来“安装”htmlagilitypack

这一切意味着什么?其他网站则表示要查看bin文件夹中的dll。那叫我做什么? 请更详细地解释,让我开始

3.)假设我使用C#我应该创建什么样的项目


4.)请告诉我您认为适用于我的项目的任何其他资源。

鉴于您的计算机上安装的.NET framework版本,您似乎可以创建一个.NET 4.0项目。什么类型的项目取决于您希望应用程序如何运行。我个人会选择创建一个C#类库项目,该项目包含加载html和清理代码,然后将其托管在您想要实际打开文件的任何机制中

要从文件系统打开文件,请使用
file.OpenRead
file.ReadAllText
from。您可以将流或文件内容传递给
HtmlDocument.Load/LoadHtml
方法

 HtmlDocument doc = new HtmlDocument();

 // Use File.ReadAllText
 string contents = File.ReadAllText("PathToFileName");
 doc.LoadHtml(contents);

 // Or use a stream
 using (var contents = File.OpenRead("PathToFileName"))
 {
     doc.Load(contents);
 }
托管的可能性很大。控制台应用程序(可从命令行或通过任务计划程序调用)、Windows服务(可以在Windows中加载,即使没有人登录计算机也可以在后台运行,并且可以使用
FileSystemWatcher
自动获取文件,或者使用Windows窗体/WPF应用程序,让用户选择要处理的文件,然后以某种方式显示结果

至于如何使用它,这是Html Agility Pack的主要问题之一。随着时间的推移,使用它的新方法不断增加,因此实际的库中有几种方法可以使用。您可以采用老式的XPath查询路由(这是原始API),也可以使用Linq到Html/XML路由(这是一种更新的方式)。两者都不比另一个好,它们都有各自独特的优势。XPath解决方案允许您轻松地将查询存储在文本文件中,因此对于可配置系统来说非常好,而从开发人员的角度来看,Linq到HTML版本更容易理解

至于如何下载,这里也有很多选择

  • 你确实可以。不管你是怎么做的,你可能想以任何方式去做,它允许你在引擎盖下观察并找出为什么某些东西会以这种方式工作,即使你自己没有编译这个库
  • 您可以从CodePlex下载二进制文件并将其存储在项目中,在创建NuGet等服务之前,这是开发人员分发库的唯一简单方法
  • 我个人会选择去Nu
     HtmlDocument doc = new HtmlDocument();
     doc.Load(/* path to file or stream */); or doc.LoadHtml(/*string*/);
    
     var nodes = doc.DocumentNode.SelectNodes("//table/tr/td");
    
     var nodes = doc.DocumentNode.Descendants("table")
               .Select(table => table.Elements("tr").Select(tr => tr.Elements("td")));
    
    var tds = from tables in doc.DocumentNode.Descendants("table")
                from tr in tables.Elements("tr")
                from td in tr.Elements("td")
                select td;