美文网首页
控制导出数据结构

控制导出数据结构

作者: 游侠儿evil | 来源:发表于2017-12-05 06:51 被阅读0次

Controlling Export Data Structures

Visual Web Ripper在运行数据提取项目时,总是将数据提取到内部数据库中。内部数据库包含项目中每个模板的数据表。一个项目可以包含许多模板,因此这通常会导致大量的数据表,而这通常不是为最终用户展示所提取数据的好方法。因此,当导出数据时,Visual Web Ripper会将这些表合并到更少的表中,通常是单个数据表。

Visual Web Ripper通常情况下,将内部数据表整合到适当数量的导出表中是一件很好的工作,但是Visual Web Ripper不理解所提取数据的含义,所以有时您可能想要控制Visual Web Ripper正在整合内部数据表的方式。

您可以使用template选项保存数据方法来控制如何导出一个模板对应的数据表。

save data method

选项保存数据方法让您可以选择下面的保存方法之一。

  • 默认.Default 将使用在项目选项中设置的保存数据方法。如果保存数据方法在项目选项中设置为默认值,那么Visual Web Ripper 将会尝试并找出最适当的方法来保存数据。
  • 保存在分表中.SaveInSeparateTable 数据总是保存在一个单独的数据表中。
  • 增加行在父表中.AddRowsInParentTable 将在父数据表中保存数据,并为子表中的每一行复制父表中的行(这也称为数据反向正规化denormalization)。
  • 增加列在父表中.AddColumnsInParentTable 将在父数据表中保存数据,但不会在父表中复制数据。相反,它将向父表添加新的数据列。
  • 主表.MainTable 数据将保存在主项目表中。主表中的现有数据不会被复制,但是新的数据行将被添加到表中。如果您从站点的不同部分提取相同类型的数据,并且希望保存在单个数据表中的所有数据,那么这个选项有时是有用的。

在父表中添加数据列 Adding Data Columns in the Parent Table

在一个数据行中,将所有与单个逻辑数据项关联的所有数据都放在一起是很实用的。例如,如果您正在从产品目录中提取数据,您可能希望在单个数据行中拥有与某个产品相关联的所有数据(在Excel电子表格中的一行)。

下图中所示的输出数据结构包含三个数据表。数据结构演示了一个典型的产品目录提取,其中包含一个包含产品类别的数据表,第二个数据表包含产品详细信息,如名称和价格,以及包含每个产品的一个或多个图像的第三个数据表。

image.png

如果您正在将数据提取到Excel文件或CSV文件中,那么您可能需要这样的输出格式:

category1, product1, image1, image2,
category1, product2, image1, image2, image3

这可以通过将选项 Save data方法设置为AddColumnsInParentTable来实现,这将在父表(产品数据表)中保存新数据列中的图像数据。

AddColumnsInParentTable选项保存了在父表中模板提取的所有内容。您可以通过使用Add column methodColumn name elementSingle column value separator内容选项来控制在父表中保存的内容(以及如何)。

image.png

Add column method选项指定如何在父表中保存内容。你可以选择这四种方法中的一种:

  • 默认Default: 默认的行为是为子数据表中的每一行添加一个额外的列。
  • 无None: 内容永远不会保存在父表中。
  • 多列MutipleColumns: 数据表中的每一行都在父表中生成一个额外的列。
  • 单列SingleColumn: 每一行中的数据被连接到父表中的单个列中。数据被连接起来,但是被指定的字符分隔开。这个字符是在单列值分隔符(Single column value separator)中指定的。

当在父表中的多个列中保存数据时,父表中的列名将与子表中的列名相同,但是添加了一个数字。例如,如果子表中的列名是image,那么父表中的列名将会是

image_1, image_2, image_3, ....
Name Value
Width 100
Height 50
Depth 25

如果您在父表中保存某些数据,例如名称/值属性,那么您可能希望在父表中指定这些列,以反映子表中的内容。例如,查看下面的子表数据。

Name Value
Width 100
Height 50
Depth 25

您可能希望这个子表生成下面的父表列。

Width Height Depth
100 50 25

您可以通过将列名元素属性设置为内容元素的名称,将您希望使用的值提取为列名称,从而实现这一点。

局限性Limitations

在每次运行一个项目时,向父表添加列会导致父表中不同数量的列。这通常只适用于将数据导出到Excel电子表格,有时在导出数据到CSV文件时是有用的。































相关文章

网友评论

      本文标题:控制导出数据结构

      本文链接:https://www.haomeiwen.com/subject/tucqixtx.html