数据采集项目

项目选项


项目选项是适用于整个项目的选项。最常用的项目选项与以下三个方面相关:

  • 开始的urls
  • 连接
  • 代理

您可以通过单击project options工具栏按钮打开项目选项屏幕。


Project Options




开始URLs选项 descriptions
Include start URLs in data output 在数据输出中包含开始的url。
Wait for partial load only 如果交互超时已经完成,页面加载就会被认为是完整的。当一个网页需要很长时间加载一个外部资源时,这个选项就可以使用了。
Single start URL 用于设计的URL是惟一使用的开始URL。
List of start URLs 静态url的列表被用作起始url。
Feed URLs from input data source 启动urls是从输入数据源读取的,比如数据库表或CSV文件。

特殊的URL参数开始
添加URL参数 ??Post 指定应该贴在网站上的数据。
添加URL参数 ??Headers 以指定应该发送到网站的附加头信息。

注意: Post参数必须在头参数之前出现。每个参数是可选的。

例子:
本例中的URL将向站点post par2=val2&par3=val3,而 par1=val1 只是一个普通的查询参数。

http://www.sequentum.com?par1=val1??post=par2=val2&par3=val3??headers=Content-Type: application/x-www-form-urlencoded

代理选项 Description
Use proxy servers 该项目将循环使用代理服务器列表,并在检索web页面时使用代理服务器。代理服务器可以用来将你的IP地址隐藏在目标网站上。
Switch proxy after this number of page loads 在这个页面加载之后,Visual Web Ripper 将会切换到下一个代理。您必须配置多个代理,以使Visual Web Ripper 能够切换代理。

浏览器选项 这些选项只适用于WebBrowser代理。当使用网络爬虫或internet explorer代理时,这些选项没有任何效果。
Display images 下载并在处理浏览器中显示所有的图像。图像内容仍然被下载,即使这个选项被关闭了。不下载和显示所有图像会增加数据提取速度。有些网站在没有图片的情况下可能无法正常工作。
Run ActiveX & Flash 在处理浏览器中下载并运行所有的Flash和ActiveX对象。不下载和显示所有的Flash和ActiveX对象会增快数据的提取速度。有些网站在没有运行ActiveX对象的情况下可能无法正常工作。
Ignore cache 总是将缓存的内容与实时内容进行比较。如果关闭“忽略缓存”和“显示图像”,那么已经在缓存中的图像仍然会显示出来。
Execute scripts 执行Javascript。没有执行脚本会增加数据提取速度,但是很多网站在这个选项被关闭的情况下无法正常工作。
Load frames 下载框架与框架集
Ignore certificate errors 允许Visual Web Ripper用无效的SSL证书加载网站。
Pass authentication 自动为web浏览器提供身份验证,而不是打开一个对话框。为了使web浏览器代理身份验证能够工作,这个选项是必需的。

JavaScript选项 Description
Inject standard JavaScript 页面加载前的覆盖会将标准的Visual Web Ripper的javascript注入到一个页面中,以便更好的页面处理。
Custom JavaScript overrides 用于覆盖的javascript的自定义列表。
杂项设置 Description
Default data collector 用于数据采集的默认数据收集器。
Web crawler worker threads 在使用web爬虫采集器时,用于检索和处理数据的并发线程数量。大量的工作线程可能会在较慢的Internet连接上导致页面加载超时。
Log level 日志级别越高,记录的信息就越多。日志文件位于[My Document]\Visual Web Ripper\Log
Web crawler cookie 一个用于web爬虫采集器的初始cookie。
Get current browser cookie 检索当前在web浏览器中显示的活动cookie。
高级选项 Advanced Options
Inject JavaScript into all frames 将JavaScript注入到所有frames中。
Refresh after page load 在浏览新网页后,完全刷新网页浏览器的网页。
Delay after page load (milliseconds) 在导航到第一个页面后等待指定的毫秒数。
Wait for page load during AJAX 在执行AJAX操作时等待页面完全加载。
Reduce memory delay 在尝试减少浏览器内存后的几秒钟内延迟。延迟的时间越长,减少内存的机会就越大。
Remove Flash 在处理网页之前,尝试从网页中删除Flash对象。
Load frames 在网页上加载所有的frames和iframes(只在浏览器模式下)。
Hide selection styles 隐藏Visual Web Ripper在浏览器中的选择样式。
Multi-threaded downloads 在不同的线程中下载文件和图像(仅使用WebBrowser模式)。
Ignore page load error codes 加载网页时,忽略错误码。
Save duplicate reference data 将引用数据保存到磁盘上,这样Visual Web Ripper就可以检查项目运行之间的重复数据。
Remove duplicate reference data 删除用于重复检查的所有旧引用数据。这将导致在项目运行的下一次时提取完整的数据集。
Data row cache 在将提取的数据写入磁盘之前,缓存这些输入数据行并在内存中启动urls。值为0意味着所有数据都缓存在内存中。
Output table name 这个模板生成的输出表的名称(如果有的话)。如果该属性为空,则使用模板名。
Initialization script 在项目开始之前运行的自定义脚本。
Partial page load 如果交互超时已经过去,页面加载就会被认为是完整的。当一个网页需要很长时间加载一个外部资源时,这个选项就可以使用了。
Redirect on meta refresh 当发现一个meta刷新标记时,web浏览器将重定向。
Link transformation 转换开始URL(s)的脚本。
Always use default proxy 一个用于web爬虫采集器的初始cookie。
Load default cookie 在web爬虫模式中加载每个开始URL的默认cookie。
Allow unsafe header parsing 支持返回不正确响应头的网站。
Close all dialogs Visual Web Ripper将尝试在运行时阻制所有的网站对话框,但是可能会在一些特殊的对话框中失败。这个选项将一个Windows钩子注入到所有对话框中,并在对话框中自动按下指定的按钮。模板选项关闭对话按钮指定将按下的按钮列表。默认的按钮是带有文本为Ok和Yes。指定的文本不是大小写敏感的。
XPath functions 可以在选择xpath中使用的自定义函数列表。

模板样式


Visual Web Ripper有许多不同类型的模板。大多数模板类型在打开模板时执行操作,比如导航到新页面或提交表单。PageArea模板是不同的,因为它们在当前的网页中定义了一个区域,但是不执行操作。选择模板也不执行任何操作。相反,它们会从现有的列表模板中添加或删除选定的元素。

设计模板最困难的部分是为给定的场景选择正确的模板选项。例如,如果您正在从一个AJAX站点提取数据,您可能需要使用一些与AJAX操作相关的选项,以确保Visual Web Ripper能够正确地导航网站。

一些模板选项可以用于所有模板类型,但是其他模板类型只适用于特定的模板类型。

下面的子主题描述了Visual Web Ripper所支持的每种类型的模板。

页面区域模板(PageArea Templates)


在几乎所有的Visual Web Ripper 项目中都使用了PageArea模板。它们不执行动作,而是在网页中定义一个区域。在打开PageArea模板时,选中的区域会变成淡绿色,只有在页面区域内才可以选择元素。

一个PageArea模板通常用来定义一个元素列表。例如,如果你在旅游网站上搜索酒店,搜索结果会包含酒店列表。每一家酒店都是搜索结果中的一项,每一家酒店都有一些特定的属性,比如名字、描述和价格。可以使用PageArea模板来定义搜索结果中的一个条目的区域,并且可以设置列表选项来遍历所有条目。


Lists Area

一旦打开了PageArea模板,就可以将内容元素添加到模板中。内容元素只能从定义的页面区域中提取内容。如果PageArea模板是一个列表模板,那么内容元素将自动应用到列表中的所有页面区域。

image.png

所有列表模板都生成一个新的输出数据表,因此上面的示例的数据输出将是一个包含数据行的数据表,其中包含提取的内容“Price/night”。

继续上面的示例,您可能想要导航到酒店的详细信息页面,以提取关于上市酒店的详细信息。这可以通过在导航到酒店详细信息页面的PageArea模板中添加一个链接子模板来实现。同样,如果PageArea模板是一个列表模板,那么只需要定义一个单独的细节链接,而 Visual Web Ripper将会自动跟踪列表中的每个酒店的详细链接。


image.png

PageArea选项(PageArea Options)

创建PageArea模板时最常用的选项是与列表模板相关的列表选项和选项。做一个完美的列表选择是很困难的,所以请阅读创建列表以获取更多信息。
以下的选项可用于PageArea模板:

  • List options 列表选项
  • Misc template options 杂项模板选项
  • Xpath options Xpath选项
  • Filter options 过滤选项
  • Condition options 条件选项
  • Duplicate data options 重复数据选项

链接模板 Links Template


链接模板是最常用的模板。它被用来点击链接并在一个网站上导航。当打开一个链接模板时,Visual Web Ripper会点击一个链接,然后导航到一个新的网页。如果模板是一个列表模板,那么Visual Web Ripper就会遍历列表中的所有链接,从而导航到所有的链接。

链接模板通常是一个PageArea列表模板的子模板。例如,如果一个PageArea模板迭代一个搜索结果列表,那么可以使用一个链接模板导航到每个搜索结果的细节页面。在这种情况下,链接模板不是一个列表模板。然而,由于PageArea模板是一个列表模板,所以Visual Web Ripper 仍然可以导航所有的链接。

链接选项(Link Options)

在创建链接模板时,操作选项是最重要的一组选项。两个主要的选择是:

  • Full page load
  • AJAX or JavaScript

当点击选择的链接导航到一个新页面时,会使用完整的页面加载选项。当单击链接时,应该使用AJAX或JavaScript选项,而不是导航到新页面,而是动态地在当前页面上更改内容。


完整页面加载选项 Full page load options
Start new web browser 当Visual Web Ripper在WebBrowser模式下运行时,一个单一的浏览器实例被用来浏览网站。如果你正在遍历一长串链接,Visual Web Ripper会点击打开一个新网页的链接,从新网页中提取数据,然后再回到链接列表中,以继续下一个链接。

这可能是一个缓慢的过程,因为Visual Web Ripper需要为列表中的每个链接导航两个网页:首先它导航链接,然后它导航到链接列表。

如果你手动导航链接列表,你可能会在一个新窗口或一个新的浏览器标签页打开每个链接,以避免每次都回到链接列表。如果使用新的Web浏览器选项,Visual Web Ripper也可以做同样的工作。
AJAX before full page load 当导航到一个新网页时,导航应该立即开始。Visual Web Ripper不需要等待导航开始,而是假设导航失败了,如果它在几秒内没有启动。有时网站会执行一个JavaScript来显示“请等待……””消息,这样的JavaScript可能需要花费几秒钟的时间来执行,特别是如果它激活了AJAX调用。在这种情况下,您可以在完全页面加载选项之前使用AJAX,以确保Visual Web Ripper不会报告页面加载失败。
Data collector Visual Web Ripper可以在WebBrowser或web爬虫模式中提取数据。web爬虫模式要快得多,但在所有网页上都不适用,因为它忽略了JavaScript和所有动态内容。

网站通常只在一些网页上使用动态内容。例如,一个网站可能会在搜索结果页面上使用JavaScript进行页面导航,但是一旦你点击了每个搜索结果的细节链接,JavaScript就不再使用了。在这种情况下,您可以在单击详细链接时切换到web爬虫模式,从而显著提高数据提取项目的性能。
请参阅web爬虫模式以获得更多关于在web爬虫模式中提取数据的信息。
Link transformation 链接转换用于在 Visual Web Ripper 打开URL之前转换链接URL。当链接调用一个JavaScript然后打开新网页时,这通常是有用的。由于该链接调用了JavaScript,因此无法使用web爬虫模式,但通常可以找到静态URL,并且可以使用链接转换将JavaScript调用转换为静态URL。这允许你使用web爬虫模式打开网页。

例如,一个链接可以激活一个看起来像这样的JavaScript:
openNewWebPage('/products/category/products.aspx?id=3456')
您可以使用链接转换将上面的JavaScript转换为以下静态URL:
/products/category/products.aspx?id=3456
See [Transformation Scripts]for more information about transformation scripts.

选择“Full Page load”选项提供了以下选项:

完整页面加载选项 Full page load options
Start new web browser 当Visual Web Ripper在WebBrowser模式下运行时,一个单一的浏览器实例被用来浏览网站。如果你正在遍历一长串链接,Visual Web Ripper会点击打开一个新网页的链接,从新网页中提取数据,然后再回到链接列表中,以继续下一个链接。

这可能是一个缓慢的过程,因为Visual Web Ripper需要为列表中的每个链接导航两个网页:首先它导航链接,然后它导航到链接列表。

如果你手动导航链接列表,你可能会在一个新窗口或一个新的浏览器标签页打开每个链接,以避免每次都回到链接列表。如果使用新的Web浏览器选项,Visual Web Ripper也可以做同样的工作。
AJAX before full page load 当导航到一个新网页时,导航应该立即开始。Visual Web Ripper不需要等待导航开始,而是假设导航失败了,如果它在几秒内没有启动。有时网站会执行一个JavaScript来显示“请等待……””消息,这样的JavaScript可能需要花费几秒钟的时间来执行,特别是如果它激活了AJAX调用。在这种情况下,您可以在完全页面加载选项之前使用AJAX,以确保Visual Web Ripper不会报告页面加载失败。
Data collector Visual Web Ripper可以在WebBrowser或web爬虫模式中提取数据。web爬虫模式要快得多,但在所有网页上都不适用,因为它忽略了JavaScript和所有动态内容。

网站通常只在一些网页上使用动态内容。例如,一个网站可能会在搜索结果页面上使用JavaScript进行页面导航,但是一旦你点击了每个搜索结果的细节链接,JavaScript就不再使用了。在这种情况下,您可以在单击详细链接时切换到web爬虫模式,从而显著提高数据提取项目的性能。
请参阅web爬虫模式以获得更多关于在web爬虫模式中提取数据的信息。
Link transformation 链接转换用于在 Visual Web Ripper 打开URL之前转换链接URL。当链接调用一个JavaScript然后打开新网页时,这通常是有用的。由于该链接调用了JavaScript,因此无法使用web爬虫模式,但通常可以找到静态URL,并且可以使用链接转换将JavaScript调用转换为静态URL。这允许你使用web爬虫模式打开网页。

例如,一个链接可以激活一个看起来像这样的JavaScript:
openNewWebPage('/products/category/products.aspx?id=3456')
您可以使用链接转换将上面的JavaScript转换为以下静态URL:
/products/category/products.aspx?id=3456
See [Transformation Scripts]for more information about transformation scripts.

下面的选项也可以用于链接模板:

  • Advanced action options
  • List options
  • Misc template options
  • XPath options
  • Filter options
  • Condition options
  • Duplicate data options

LinkArea模板


LinkArea模板类型与标准链接模板非常相似,但是它会导航到页面选择区域的所有链接,而不是一个链接。

许多新手用户使用LinkArea模板来浏览一个链接列表,因为很容易选择一个区域,并让Visual Web Ripper解决剩下的问题。然而,这很少是一个好主意,因为很难控制哪些链接是导航的。如果您想要浏览一个链接列表,您应该几乎总是使用一个标准链接模板,并将其作为一个列表模板。这使您可以更大程度地控制哪些链接实际上是被选中的。在少见的情况下,选择list是不切实际的,您可以使用LinkArea模板。

LinkArea Options
LinkArea模板使用与链接模板相同的选项,因此请查看链接选项以获得更多信息。

链接区域选项 Link Area Options
Link start index LinkArea模板选择一个链接列表。该选项指定第一个链接的索引。0的值意味着可视化的Web开膛手将从第一个链接开始。
Link count 该选项指定要导航的链接的数量。0的值意味着Visual Web Ripper将从开始索引中导航所有的链接。

LinkArea模板有两个独特的选择:

链接区域选项 Link Area Options
Link start index LinkArea模板选择一个链接列表。该选项指定第一个链接的索引。0的值意味着可视化的Web开膛手将从第一个链接开始。
Link count 该选项指定要导航的链接的数量。0的值意味着Visual Web Ripper将从开始索引中导航所有的链接。

The following groups of options can also be used with LinkArea templates:

  • Advanced action options
  • Misc template options
  • Xpath options
  • Filter options
  • Condition options
  • Duplicate data options

FormSubmit 模板


一个FormSubmit模板提交一个web表单来导航到一个新页面。FormField内容元素可以与FormSubmit模板关联,以指定输入值。

FormSubmit模板可用于提交任何web表单,如登录或搜索表单。可以将多个输入值提供给表单,然后 Visual Web Ripper提交所有这些输入值的组合的表单。

FormSubmit模板通常选择提交类型的输入HTML元素。Visual Web Ripper点击输入元素来提交表单。有时,网站会使用JavaScript提交表单。在这种情况下,提交HTML元素可能是任何HTML元素。如果网站不使用输入HTML元素作为提交元素,那么Visual Web Ripper可能会识别被选中的HTML元素作为链接,你需要将模板类型从链接更改为FormSubmit。

FormSubmit模板通常有相关的FormField内容元素。这些内容元素选择表单输入元素,并指定表单输入值。

FormSubmit

FormSubmit Options

Visual Web Ripper可以以三种方式提交一种形式:

  • Submit button
  • Auto submit
  • Direct URL

提交表单的标准方式是使用提交按钮。当模板打开时,FormSubmit模板选择并单击submit按钮。

有时一个网站在下拉菜单中选择一个值时自动提交表单。在这种情况下,应该将FormSubmit模板设置为Auto submit。自动提交表单提交模板不需要选择HTML元素,模板也不执行任何操作。模板简单地用作子模板和子内容元素的容器。如果您使用的是Auto submit FormSubmit模板,那么至少有一个相关的FormField内容元素必须执行一个操作。否则,在打开FormSubmit模板时不会发生任何动作。请参阅FormField内容以获得更多信息。

有时,表单可以通过简单地导航一个静态URL并将表单输入值作为URL参数来提交。如果您选择了直接URL选项,则必须输入完整的URL,其中包括带有示例值的所有参数。当Visual Web Ripper 提交表单时,它会自动地将样本值与FormField内容元素的实际输入值交换。FormField内容元素的名称必须与直接URL中的参数名称匹配。虽然很少使用,但是直接URL选项对于提高数据提取性能或者提交表单是非常有用的。

请参阅提交Web表单以获得关于在表单提交上下载文件的更多信息。

The following groups of options can also be used with FormSubmit templates:

  • Misc template options
  • XPath options
  • Filter options
  • Condition options
  • Duplicate data options

Web Form Examples

  • 提交一个输入值列表的Web表单
  • AJAX级联下拉菜单
  • 提交带有单选按钮或复选框列表的Web表单

PageNavigation模板


分页导航模板用于在页面导航中遍历所有页面。分页导航模板不能包含内容元素或模板,但只需打开页面导航的新页面,就可以打开父模板。

下面的例子展示了一个PageArea列表模板的项目结构。对于列表中的每个页面区域,它提取一个内容元素,然后移动到一个细节页面,并提取两个额外的内容元素。整个PageArea列表模板在页面导航中重复出现。

PageNavigation

PageNavigation Options
页面导航有四种类型:

  • Next Page navigation 下一页导航
  • Single Link navigation 单链接导航
  • List of Links navigation 列表链接导航
  • Dynamic List of Links navigation 动态列表链接导航

下一页导航是最常用的导航类型。当页面上的页面导航有一个“下一页”链接时,它就会被使用,这个链接会把你带到导航的下一个页面。pagenavi领航模板应该选择网页上的“下一页”链接。下一个页面的pagenavigaton 导航模板会自动地对选择应用一个过滤器,因此选择XPath通常最后看起来是这样的://A[.= 'next> > ']。您不需要知道XPath语法来使用该特性,但是这样的XPath确保了一个很好的、健壮的选择,它对未来的更改非常宽容。

单个链接导航类似于下一个页面导航,但是它不应用选择过滤器。尽管很少使用,但是在选择过滤器自动应用到下一个页面选择的情况下,单链接pagenavigation导航模板可以很有用。

当没有“下一页”链接时,链接导航列表就会被使用,而只是一个页面链接的列表。链接导航模板的列表选择了导航中的每个链接,因此应该是一个列表模板。

一些网站显示了前10个导航页面,然后有一个“下一个”链接进入下一个10个导航页面。在这种情况下,您必须使用两个分页导航模板。第一个模板必须是一个链接pagenavigation导航模板的列表,该模板选择了前10个导航页面。第二个模板必须是选择下一个链接的下一个页面或单个链接pagenavigation导航模板。

当没有“下一页”链接时,链接导航的动态列表会被使用,但是当你在导航中向前移动时,列表中的页面链接和列表中的页码会动态变化。动态页面导航的一个很好的例子就是Google搜索。请注意,Google搜索也有一个“下一页”链接。在这种情况下,您应该使用下一个页面导航,但是链接导航的动态列表也会起作用。
The following groups of options can also be used with PageNavigation templates:

  • Advanced action options
  • Misc template options
  • XPath options
  • Filter options
  • Condition options
  • Duplicate data options

Redirect重定向模板


重定向模板简单地重定向到一个新网页。如果一个网页包含一个框架,并且在一个新模板中处理框架内容更加实用,这是很有用的。另外,web爬虫收集器不支持框架,因此在使用web爬虫收集器时,需要重定向来处理框架内容。

Redirect Options
重定向模板可以以两种方式重定向到另一个网页:

  • URL redirect
  • Frame

如果您选择URL重定向选项,您还必须输入一个固定的URL,模板将始终重定向到那个固定的URL。
如果选择帧选项,则必须选择希望模板重定向的框架。模板将在处理的时候从框架中提取URL,并重定向到URL。框架可以是HTML框架或HTML框架集的框架。

Special URL Parameters
添加URL参数 ??Post 应该被发布在网站上的数据。
添加URL参数 ??Header 以指定应该发送到网站的附加头信息。

注意:Post参数必须在头参数之前出现。每个参数是可选的。

例子:
本例中的URL将向站点发送par2=val2&par3=val3,而par1=val1只是一个普通的查询参数。

http://www.sequentum.com?par1=val1??post=par2=val2&par3=val3??headers=Content-Type: application/x-www-form-urlencoded 

Selection 模板

选择模板修改另一个模板的选择。选择模板可以从目标列表模板中的选择中添加或删除元素。

有时,当你有一个列表模板来选择一个链接列表时,你不会想要遵循一些特定的链接,或者你想要添加一些链接到网页的不同区域。选择模板是从列表模板中添加或删除链接的一种简单方法。

Selection Options
选择模板可以用两种方式修改列表模板:

  • Add to a selection 添加一个选择
  • Remove from a selection 移除一个选择

您必须始终选择希望修改的目标列表模板。目标列表模板是通过名称来选择的。如果您更改目标列表模板的名称,您还必须更改任何相关的选择模板。

Back模板

Visual Web Ripper web浏览器收集器使用Internet Explorer导航目标站点并提取数据。当Visual Web Ripper导航到一个新网页时,它有时需要导航回到先前的网页,以便处理列表模板中的下一个链接。

返回(Back)模板指定了Visual Web Ripper 如何回到上一个的模板。如果没有添加返回模板,则使用默认的返回模板。默认的返回模板使用浏览器历史导航到前一个模板的网页,但是如果浏览器的历史没有将Visual Web Ripper 带回预期的URL,它就会导航到预期的URL。返回模板对不导航到新页面的模板没有影响。

web爬虫收集器每次打开新网页时都会打开一个新的web爬虫,所以它不需要回到以前(上一个)的网页。因此,后退模板对web爬虫模式没有影响。

Back Options
一个Back模板有以下独特的选项:

Back 模板选项 Back Options
Click link to move back to previous page Back返回模板将点击一个链接,以导航回到先前的网页。在一些高度动态的网站上,这是一个非常重要的选择。您可能有搜索结果,您已经定义了一个模板来导航搜索结果中的细节链接。细节网页可能会有“返回到搜索结果”链接,点击这个链接可能是回到搜索结果的唯一方法。有时,当目标网站广泛使用AJAX时,就会发生这种情况。
Move back from skipped template Visual Web Ripper 即使跳过了一个可选的模板,也可以处理后面的模板。
Use browser back history Visual Web Ripper 使用浏览器历史回到以前的网页。这类似于在web浏览器中手动按下Back按钮。
Must return to previous URL 此选项通常与使用浏览器后退历史选项一起使用,并强制Visual Web Ripper导航到预期的前一个URL,如果Back模板的其他操作不返回到该URL。
Do not move back to previous URL 通常不需要返回到前面的URL。例如,如果数据提取在一个特定的网页上结束,那么从网页中导航是浪费时间。
这个选项非常有用,您不需要添加一个返回模板来指定它。相反,您可以简单地重新设置导航回通用模板选项。

下面的选项也可以用于返回模板:

  • Advanced action options 高级操作选项
  • Misc template options 杂项模板选项
  • Xpath options Xpath选项
  • Filter options 过滤选项

RepeatParent 模板

重复父模板用于为列表中的每个链接重复当前模板。该模板经常用于具有不同深度的菜单层次结构的网站。例如,网站可能包含一个产品目录,产品可以放置在任何类别级别,因此可能有一个类别Computers包含一些产品,但是Computers类别也可能有更多产品的子类别。
显示Computers类别的网页可能在顶部有一个列表,上面有所有子类别的链接,然后是属于Computers类别的产品列表。如果所有类别和子类别都使用布局,那么您可以使用相同的模板来处理所有类别页面。然后您可以使用一个重复的父模板来导航所有的子类别链接。

重复父模板是递归的,所以只要模板选择在网页上找到,Visual Web Ripper就会继续处理重复的父模板。

重复父模板类似于分页导航模板,但它们不是相同的。重复父模板不应该用于页面导航。当一个重复父模板导航到一个新网页时,它会寻找一组新的子类别链接并处理它所找到的所有链接。重复父模板不应该用于页面导航。当一个重复父模板导航到一个新网页时,它会寻找一组新的子类别链接并处理它所找到的所有链接。一个pagenavigation导航模板还可以导航到一个新的页面,并寻找一组新的页面导航链接,但是它会记住它已经访问过的页面,所以它不会在导航中一次性处理一个页面。

Group模板

可以使用group模板来组织内容和模板,从而使项目更容易从逻辑的角度理解。一个组模板不执行操作,它不会影响子元素的选择XPath。

使用输入数据源 Using an Input Data Source
当您为一个项目分配一个输入数据源时,整个项目将为每个输入数据行运行一次。有时,您可能希望一次运行某个项目的某些部分,以及项目的其他部分用于每个输入数据行。例如,您可能希望一个项目登录到一个网站,然后在输入CSV文件中为每个值提交一个web表单。如果您将输入文件分配给项目,那么这个项目将会在每个输入数据行中登录一次。每次登陆后,网站可能会显示一个验证码(CAPTCHA )的屏幕,如果你登录网站的次数过多,网站可能会锁定你。您可以将表单提交模板放在一个组模板中,并将输入数据源分配给group模板,而不是将输入数据源分配给项目。该项目只运行一次,但是组模板将为每个输入数据行运行一次。

您可以在模板选项中使用Advanced选项卡,将输入数据源分配给一个组模板。


Advanced Options

杂项模板选项 Miscellaneous Template Options

杂项模板选项可用于大多数模板类型,并且经常在web抓取项目中使用。

杂项模板选项 Misc Template Options
Optional template 如果在网页上没有找到所选元素,模板仍会被处理,但不会导航到一个新网页。
在某些情况下,这是一个很有用的选项,例如当您有一个登录页面时,只有您尚未登录时才会显示登录页面。如果您已经登录了网站,那么Visual Web Ripper 就会简单地忽略登录模板。
另一个场景是一个产品目录,它具有不同的类别级别。您可以为每个类别级别创建一个链接模板,但是使模板可选,以便项目可以根据需要跳过类别级别。
Required template 如果选择的元素不能在网页上找到,就中止对模板的处理。当前的数据行从输出数据中删除。
Extract text 提取所选元素的内文本值。这通常在链接模板中使用,以提取链接文本。如果该链接包含一个图像,则将提取图像的alt文本。
这个选项是一个快捷操作,只能提取所选元素的内部文本。如果您想要提取所选元素的其他属性,您需要创建一个PageArea模板,它提取您需要的属性,然后使用一个链接子模板导航到下一个页面。
Save template 将模板中的内容保存到目标数据源。有些模板可能只提取脚本使用的内容,而输出中可能不需要提取的数据,因此可以重新设置这个选项以排除来自输出的数据。
重置此选项将不包括模板和所有子模板中的所有内容。如果您想要排除一个特定的模板,但是仍然保存子模板,使用排除(Exclude )模板。
Disable template 忽略了模板。该项目不会处理或保存该模板或任何子模板的内容。
Exclude template 该选项类似于Save template选项,但它不会影响子模板,因此子模板中的内容仍然会保存到输出中。
Wait for element 如果元素是通过AJAX加载的,则可以使用此选项来等待元素。这是一个使用等待脚本的简单方法,但它只会等待页面上的元素出现。如果您需要更多的控制,例如等待一个元素包含一个特定的值,您需要使用一个等待脚本。
Element wait condition 如果一个元素在一个完整的页面加载后被AJAX加载延迟,那么可以使用等待脚本告诉Visual Web Ripper等待,直到元素完成加载。
Navigate back Visual Web Ripper web浏览器收集器使用Internet Explorer导航目标站点并提取数据。当可视的Visual Web Ripper导航到一个新网页时,它有时需要导航回到先前的网页,以便处理列表模板中的下一个链接。

通常,它不需要返回到以前的URL。例如,如果数据提取在一个特定的网页上结束,那么从网页中导航是浪费时间。

模板操作 Template Actions

模板可以执行两种操作:

  • Full page load
  • JavaScript

完整的页面加载(Full page load)操作用于导航到一个全新的web页面,JavaScript操作用于在当前web页面上触发JavaScript事件和AJAX请求。

自动检测适当的动作 Detecting the Appropriate Action Automatically
Visual Web Ripper 通常可以自动检测到最合适的模板动作。如果您将模板动作设置为自动检测,Visual Web Ripper将自动配置模板动作。当您第一次在编辑器中打开模板时,将配置模板操作。

Full Page Load Options
选择完整的页面加载选项将使您能够访问以下操作选项:

整而全加载选项 Full Page Load Options
Start new web browser

(只适用于链接Link和FormSubmit模板)
当Visual Web Ripper在WebBrowser模式下运行时,一个单一的浏览器实例将被用于浏览网站。如果你正在遍历一长串链接,Visual Web Ripper会点击一个链接打开一个新网页,从新网页中提取数据,然后回到链接列表,以继续下一个链接。

这可能是一个缓慢的过程,因为Visual Web Ripper需要为列表中的每个链接导航两个网页。首先,它会导航链接,然后它会导航到链接列表。

如果您是手动导航链接列表,您可能会在新窗口或浏览器选项卡中打开每个链接,以避免每次都导航到链接列表。如果您选择了Start new web browser选项,那么Visual Web Ripper 也可以做同样的工作。
AJAX before full page load 当导航到一个新网页时,导航应该立即开始。Visual Web Ripper 不需要等待导航开始。相反,如果它在几秒钟内没有开始,它就假定导航失败了。有时网站在导航前会执行一个JavaScript,以显示“请等待……””消息。这样的JavaScript可能需要花费几秒钟的时间来执行,特别是当JavaScript激活AJAX调用时。在这种情况下,您可以选择AJAX before full page load,以确保Visual Web Ripper 不会报告页面加载失败。
Data collector

(仅适用于链接Link和链接区域LinkArea模板)
Visual Web Ripper 可以在WebBrowser或web爬虫模式中提取数据。web爬虫模式要快得多,但它并不适用于所有的web页面,因为它忽略了JavaScript和所有动态内容。

网站通常只在一些网页上使用动态内容。例如,一个网站可能会在搜索结果页面上使用JavaScript进行页面导航,但是一旦你点击了每个搜索结果的细节链接,JavaScript不再被使用。在这种情况下,您可以在单击详细链接时切换到web爬虫模式,从而显著提高数据提取性能。

请参阅web爬虫收集器获取关于在web爬虫模式中提取数据的更多信息。
Link transformation

(仅适用于链接和链接区域模板)
链接转换用于在Visual Web Ripper打开URL之前转换链接URL。当链接调用一个打开新网页的JavaScript时,这通常是有用的。因为链接调用了JavaScript,所以不能使用web爬虫模式。但是,您通常可以确定静态URL是什么,并使用链接转换将JavaScript调用转换为静态URL,这允许您使用web爬虫模式打开网页。

例如,一个链接可以激活一个看起来像这样的JavaScript:
openNewWebPage('/products/category/products.aspx?id=3456')
您可以使用链接转换将上面的JavaScript转换为以下静态URL:
/products/category/products.aspx?id=3456
有关转换脚本的更多信息,请参阅转换脚本。

JavaScript Options
有三种不同类型的JavaScript操作。

  • 异步(Asynchronous) 所有JavaScript都是在默认情况下同步执行的,但是JavaScript可以在给定的超时后使用函数setTimeout来执行JavaScript代码,JavaScript函数或事件可能会在所有相关的JavaScript代码执行之前返回。Visual Web Ripper 不能自动等待异步JavaScript的执行,所以您需要做额外的配置来帮助可视化的Visual Web Ripper 确定何时完成了JavaScript的执行。
  • 同步(Synchronous)。在所有JavaScript代码执行之前,同步JavaScript不会返回,因此Visual Web Ripper可以自动等待同步JavaScript执行。
  • AJAX。AJAX是一种特殊的异步JavaScript形式。Visual Web Ripper 通常可以钩住AJAX请求,因此自动决定何时完成异步AJAX请求。Visual Web Ripper 不会总是能够钩住AJAX请求,在这种情况下应该使用异步JavaScript。

选择异步Asynchronous JavaScript选项可以让您访问以下操作选项:

异步JS选项 Asynchronous JavaScript Options
Wait for element Visual Web Ripper当异步JavaScript完成时,除了在网页上寻找更改外,无法检测到。Visual Web Ripper将继续等待异步JavaScript,直到选定的等待元素的内容发生变化。
Script wait condition Visual Web Ripper 在等待异步JavaScript完成时,需要执行一个默认的步骤列表。默认的步骤适用于许多场景,但有时您需要添加一个等待脚本,以便告诉Visual Web Ripper何时停止等待异步JavaScript完成。

Advanced Options
下面的高级操作选项很少使用,但是可能需要从一些网站提取数据:

高级选项 Advanced Action Options
Partial page load

(仅适用于页面加载操作)
当一个网页载入时,它会经过以下三个状态:
1.Loading 加载中
2.Interactive 交互
3.Completed 完成

当一个网页加载时,它是不可访问的。Visual Web Ripper 总是要等待这个状态的通过。当一个网页是交互式的,网页的一些部分已经加载,但是其他的部分,比如图片,仍然在加载。网页可以在交互模式下访问,但是Visual Web Ripper 可能无法访问网页上所有的元素。当一个网页完成时,它已经完全载入了网页的所有元素(除了加载AJAX的动态内容之外)。

有时网站可能会加载外部内容,比如广告图片。外部内容的加载速度非常慢,这可能会显著降低数据提取的性能。您可以使用部分页面加载选项告诉Visual Web Ripper ,当页面进入交互模式时,它可以开始处理一个网页。Visual Web Ripper 在开始处理网页之前,会在交互模式下等待一个特定的时间间隔。时间间隔设置在项目选项的Connection选项卡中。

有时,您可能希望部分页面加载适用于项目中的所有操作,而不仅仅是一个特定的模板操作。您可以在项目选项的Connection选项卡中为整个项目设置部分页面加载选项。
Click to get new URL

(仅适用于页面加载操作)
当您从 WebBrowser切换到 WebCrawler收集器或使用新的web浏览器选项时,Visual Web Ripper试图从所选的链接元素中提取URL,然后在WebCrawler模式或新的WebBrowser中导航到这个URL。

有时,选中的link元素使用JavaScript导航到新页面。在这种情况下,Visual Web Ripper 将无法从link元素中提取出一个静态URL。

你可以使用点击获取新的URL来告诉Visual Web Ripper,它应该点击链接来获取URL。Visual Web Ripper会点击链接并开始导航,但是一旦它知道浏览器的导航位置,它就会停止导航并提取URL。
AJAX in page areas

(仅适用于JavaScript操作)
PageArea模板限制元素选择到一个网页的特定区域。如果一个PageArea模板有一个链接子模板,并且这个子模板被打开,页面区域就不再有任何效果,因为Visual Web Ripper 已经导航到一个新的网页,页面区域不再存在。

如果链接子模板有AJAX或JavaScript操作,那么Visual Web Ripper 不会导航到新网页,而是可以将动态内容加载到相同的网页上。因此,页面区域可能在AJAX或JavaScript操作之后仍然存在,您可以在页面区域选项中使用AJAX,指定页面区域在AJAX或JavaScript操作之后仍然可用。
Form submit links

(仅适用于web爬虫模式的全页面加载操作)
当Visual Web Ripper 在WebBrowser模式中打开一个链接模板时,它会点击所选的链接来导航到一个新的网页。因为Visual Web Ripper 点击了链接,它仍然会导航到新网页,不管它是一个真正的链接还是一个表单按钮。

在web爬虫模式中,Visual Web Ripper总是提取一个链接的URL属性并导航到那个URL。如果选中的link元素是一个表单按钮,那么Web爬行器就无法导航,因为表单按钮没有URL属性。表单提交链接选项可用于告诉Visual Web Ripper,链接元素实际上是一个表单按钮,它应该尝试提交表单以导航到新网页。
Action events 默认的模板操作总是在选中的元素上触发一个单击事件。有时,您可能需要触发其他事件来执行所需的操作。例如,AJAX操作可能需要在HTML元素上悬停,以便激活一个动态弹出窗口并从中提取数据。在这种情况下,您可以添加onMouseOver事件,导致Visual Web Ripper 触发事件而不是单击事件。

Visual Web Ripper支持三种非常规事件。domclick事件会触发click事件,并对所选元素执行缺省操作。domscroll事件滚动到选中元素的右下角。窗口滚动(windowscroll)事件将选中的元素的窗口滚动到右下角。
Redirect on meta refresh

(仅适用于页面加载操作)
一些网页在短时间间隔内刷新或重定向。如果一个元刷新的HTML标签被识别,Visual Web Ripper 就会立即重定向,但是如果你想让Visual Web Ripper 留在网页而不重定向的话,你可以使用这个选项。
Visit each page only once

(仅适用于页面加载操作)
链接列表模板遵循所有选择的链接,甚至是重复链接。您可以使用这个选项告诉Visual Web Ripper,它不应该导航已经导航的链接。

Visual Web Ripper只看链接元素的静态URL。许多网站使用会话(sessions)或post变量来生成具有相同URL的不同版本的网页,所以你应该小心使用这个选项。否则,当您希望从更多的web页面中提取数据时,您可能会从一个单独的页面中提取数据。
Click on exact element 如果一个链接模板选择了一个不是链接元素的HTML元素,那么Visual Web Ripper 就会寻找链接元素的子元素。如果它找到了一个链接元素,它就会单击这个元素而不是选中的元素。

有些网站使用JavaScript将click事件绑定到通常不是链接元素的HTML元素上。您可以使用Click onexact element 选项来告诉Visual Web Ripper ,它应该点击所选元素,而不是寻找子链接元素。
Delay after action 一些网站如果发现你在一个网站上浏览得太快,就会失败或屏蔽你。您可以使用延迟之后的动作选项,在模板操作之后设置一个固定的延迟。

如果您想将此选项应用到整个项目中的所有操作,那么在项目选项的Connection选项卡中使用Page load delay选项。
Is block popup
(仅适用于完全页面加载操作)
Restart browser session
(仅适用于完全页面加载操作)
有时,网站可能会生成一个弹出窗口作为页面加载事件的一部分。Visual Web Ripper 会自动导航到这个弹出窗口的URL。例如,如果弹出窗口是一个对您不感兴趣的广告,那么使用这个选项来阻止弹出窗口。
此选项可用于在操作之前模拟web浏览器重新启动。
Repeated AJAX calls(仅适用于AJAX操作) 果您想要重复AJAX操作,只要动作结果在AJAX回调中,就可以使用该选项。这个选项可以与操作窗口滚动或domscroll一起使用,当窗口或web元素被滚动时动态加载的内容。
Wait element change optional
(仅适用于JS操作)
有时, Visual Web Ripper 不应该等待异步JavaScript对等待元素进行更改,但应该等待直到页面上的等待元素出现。
Wait element change optional on first action
(仅适用于JS操作)
当你想要Visual Web Ripper 等待一个等待的元素时,使用这个选项,除非点击列表中的第一个链接。

例如,您可能正在从一个图像库中提取图像,并有一个链接列表,这些链接使用AJAX将不同的图像加载到库中。当网页第一次加载时,图片库中的第一个图像可能是预先加载的,因此在点击第一个图像链接后等待图像改变会失败。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容