2

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

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

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

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

4

2 回答 2

1

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

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

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

于 2013-09-01T06:42:03.087 回答
1

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

仅当您很幸运时,您才不必重新配置脚本。

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

于 2013-09-01T01:23:07.453 回答