代码之家  ›  专栏  ›  技术社区  ›  Jörg W Mittag

NET中的简单屏幕抓取与分析

  •  2
  • Jörg W Mittag  · 技术社区  · 16 年前

    我正在为prise信息建立一个小型的专门搜索引擎。引擎将只收集每个站点上的特定数据段。我的计划是将过程分为两个步骤。

    1. 要做到这一点,最简单的方法是使用WebClient对象并获取完整的HTML吗?

    2. 一旦HTML被提取并保存,通过一些脚本对其进行分析,并提取出我需要的片段和值(例如产品的价格值)。我的问题是,这个脚本在某种程度上对于我拉的每个站点都必须是唯一的,它必须能够处理非常难看的HTML(所以我认为XSLT不能…),并且我需要能够在目标站点更新和更改时动态更改它。最后,我将获取特定的值,并将其写入数据库以使其可搜索

    2 回复  |  直到 16 年前
        1
  •  3
  •   alexn    16 年前

    好吧,我会按照你描述的方式去做。

    它将处理多少数据?通过WebClient/HttpWebRequest获取完整HTML应该不是问题。

    2. 我会选择 HtmlAgilityPack 用于HTML解析。这是非常宽容的,可以处理漂亮丑陋的标记。由于HtmlAgilityPack支持XPath,因此很容易为各个站点选择特定的XPath。

    我正在逃亡,并将尽快对这个答案进行扩展。

        2
  •  1
  •   Glenn    16 年前

    strategy pattern . 您可以使用反射或类似的方式加载每个站点的策略。

    我曾在一个系统上工作过,该系统使用XML定义一组通用参数,用于从HTML页面提取文本。基本上,它将定义开始和结束提取的开始和结束元素。我发现这项技术对于一个小样本来说已经足够好了,但是随着网站集合越来越大,它变得相当麻烦,而且很难定制。使XML保持最新,并尝试保持一组通用的XML和代码来处理任何类型的站点都是困难的。但是,如果站点的类型和数量很小,那么这可能会起作用。

    pipeline 如果您认为该领域足够复杂,可以保证它的存在,那么这将是一个很好的方法。但是,即使只是一个在解析HTML之前在HTML上运行一些正则表达式的方法也是有价值的。摆脱图像,用更好的HTML替换误用的标签,等等。大量的真正不可靠的HTML仍然让我惊讶。。。