Html agility pack 需要一些关于HTML敏捷包入门的说明吗
我的背景: 当涉及到HTML清理时,我是一个新手。自从我用C#for html编写代码以来,已经有大约四年的时间了。不久前,我用C#编写的另一个代码是表单操作SQL Server数据库中的数据 我如何尝试开始使用HTML敏捷包(HAP): 我花了几天时间试图理解从各种在线资源中找到的关于如何开始使用HTML Agility Pack的说明。到目前为止,我发现的一些情况如下: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
- 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
- Net20
- 网络40
- Net40客户端
- 网络45
- sl3可湿性粉剂
- sl4
- sl4-windowsphone71
- sl5
- winrt45
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;