项目选项
项目选项是适用于整个项目的选项。最常用的项目选项与以下三个方面相关:
- 开始的urls
- 连接
- 代理
您可以通过单击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模板来定义搜索结果中的一个条目的区域,并且可以设置列表选项来遍历所有条目。
一旦打开了PageArea模板,就可以将内容元素添加到模板中。内容元素只能从定义的页面区域中提取内容。如果PageArea模板是一个列表模板,那么内容元素将自动应用到列表中的所有页面区域。
所有列表模板都生成一个新的输出数据表,因此上面的示例的数据输出将是一个包含数据行的数据表,其中包含提取的内容“Price/night”。
继续上面的示例,您可能想要导航到酒店的详细信息页面,以提取关于上市酒店的详细信息。这可以通过在导航到酒店详细信息页面的PageArea模板中添加一个链接子模板来实现。同样,如果PageArea模板是一个列表模板,那么只需要定义一个单独的细节链接,而 Visual Web Ripper将会自动跟踪列表中的每个酒店的详细链接。
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 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 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选项卡,将输入数据源分配给一个组模板。
杂项模板选项 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将不同的图像加载到库中。当网页第一次加载时,图片库中的第一个图像可能是预先加载的,因此在点击第一个图像链接后等待图像改变会失败。 |