【问题标题】:Web page(html) scraping using C#使用 C# 抓取网页(html)
【发布时间】:2011-06-28 13:47:00
【问题描述】:

这只是一个一般性问题。目前我正在使用正则表达式进行网页抓取。但我认为有时很难弄清楚正则表达式,所以我在想 XSL/XPath 是 C# 中正则表达式的替代品吗?

另外,我想知道除了上面列出的两种之外,是否还有更高级的网页抓取技术。谢谢。

【问题讨论】:

  • xsl/xpath 要求页面是 XHTML 1.0,并非所有 html 都符合 xml 解析器容易使用的内容
  • @rene:这是干净利落的吗?如果网页是XHTML1.0,那么Xpath可以用C#,如果不是XHTML1.0,那就另谋出路?
  • 关于 xhtml 1.0 的声明(在文档类型中)与实际符合 xhtml 1.0 之间存在差异。不,对不起,没有干净利落。但看起来你已经有了很好的答案
  • 令人惊讶的是,此类问题的最佳答案已发布在一个更老且更具体的问题中:stackoverflow.com/questions/18065526/…

标签: c# html regex xpath


【解决方案1】:

您可以查看SgmlReaderHtml Agility Pack,它们是 .NET 的 HTML 解析库。

【讨论】:

  • 从 NuGet 包管理器中,运行:Install-Package HtmlAgilityPack 就可以了 :)
  • @Martinho,我个人更喜欢SgmlReader,但Html Agility Pack 也可以:-)
  • 这是否意味着使用 将 html 转换为格式良好的 xml,然后在 C# 中对该 xml 文档执行 Xpath?
  • @Robert,是的,您从 HTML 页面获得了一个 XmlDocument,它使您可以完全访问 DOM 树。
  • 为了完整性:您还可以使用Fizzler 使用类似 jQuery 的 CSS 选择器进行查询。目前它适用于 HtmlAgilityPack,但我相信有计划支持其他解析库。
【解决方案2】:

从网页收集数据的简单方法是WebsiteParser。它基于 Html Agility Pack,您可以使用属性和 CSS 选择器简单地描述您的属性。

Github here

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 2019-01-20
    • 2018-01-06
    • 2011-07-16
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多