【问题标题】:Web Scraping for specific content针对特定内容的网页抓取
【发布时间】:2013-09-04 10:42:38
【问题描述】:

我正在尝试从购物网站上抓取内容,然后将其保存在我的数据库中的产品表中。抓取此类内容需要了解每个站点的 DOM 结构。不仅是 DOM 结构,还有菜单中类别的层次结构。

有许多解决方案可以通过为每个站点设置配置,然后使用 regx、XPath 或 css 选择器查找包含(例如产品名称、价格、型号等)的特定 html 元素来实现这一目标。

是否有任何解决方案可以避免为每个站点设置配置并自动抓取产品属性?

有一个类似的解决方案可以处理诸如 Readability 之类的新闻,它会查找 <p> 标签和图像的序列。由于新闻网站的相似性和结构简单,新闻更容易,

【问题讨论】:

  • 你可以自动化这个过程:给定一个文本值,找到页面上的文本,然后generate a CSS selector for the containing element。但是,不能保证生成的选择器是稳定的。您可以花几天时间编写一个收集多个页面并使用启发式方法尝试找到共同模式的脚本……或者您可以根据(对人类而言)明显的模式使用您的大脑生成一个好的选择器。

标签: xpath html-parsing web-scraping html-agility-pack


【解决方案1】:

没有灵丹妙药,但是您可以使用 XSLT 作为您的网站和抓取程序之间的主要“绑定”。 XSLT 支持内置于 Html Agility Pack。

至少它将最大限度地减少站点发展或更改其结构时所需的工作量,而不是仅依赖于纯程序代码。更改 XSLT(一旦您习惯了)文本将不需要编译,并且更等同于“配置”系统。但是,您仍然必须为每个目标网站定义至少一个 XSLT 文件(当然,除非这些网站是基于相同的软件构建的)。

您可以查看此链接以获取 XSLT 示例:Use HtmlAgilityPack to divy up a document

【讨论】:

    【解决方案2】:

    如果您要抓取的网站的 html 结构没有通用模式,您必须为每个网站配置脚本。

    只有在幸运的情况下,您才不必重新配置脚本。

    ps:通常网络爬虫从头开始构建他们的代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-09
      • 2019-01-13
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      相关资源
      最近更新 更多