【问题标题】:How to read xpath values from many HTML files in .Net?如何从 .Net 中的许多 HTML 文件中读取 xpath 值?
【发布时间】:2011-03-21 09:10:48
【问题描述】:

我在一个文件夹中有大约 5000 个 html 文件。我需要遍历它们,打开,使用 xpath 抓取 10 个值,关闭并存储在(SQL Server)数据库中。

使用 .Net 读取 xpath 值的最简单方法是什么?

xpath 应该非常稳定。

请提供示例代码来读取一个值,例如 /html/head/title/text()

谢谢

【问题讨论】:

  • 这些是 XHTML 文件吗?如果没有,您将不得不使用 Tidy 或类似的东西将它们转换为可解析的 XML。如果它们已经是 XHTML,你应该可以很容易地做到这一点 - 将文件读入 XDocument,查询你需要的值,保存到数据库 - 然后重复下一个文件
  • 它们是 XHTML 1.0 过渡版

标签: .net xpath html-parsing


【解决方案1】:

我认为您应该查看HTML Agility Pack。它是一个 HTML 解析器而不是一个 XML 解析器,并且更适合这个任务。如果有任何与正在解析的 XML 不一致的地方,那么解析器将抛出异常。使用 HTML 解析器可以为您提供更多输入文件的余地。

展示如何使用所有 HREF(链接)属性做某事的示例:

 HtmlDocument doc = new HtmlDocument();
 doc.Load("file.htm");
 foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
 {
    HtmlAttribute att = link["href"];
    att.Value = FixLink(att);
 }

我不在编译器附近,但你想要的例子是这样的:

string title = doc.DocumentNode.SelectSingleNode("//title").InnerText;

【讨论】:

    猜你喜欢
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多