运行一个项目Running a Project
在您设计了一个数据提取项目之后,您需要运行它来提取数据。您可以以许多不同的方式运行数据提取项目:
- 在Visual Web Ripper中打开项目,并点击Run project工具栏按钮。
- 使用Visual Web Ripper 计划任务调度项目。
- 使用RunProject运行项目。exe命令行工具。
- 使用API来加载和运行一个项目。
从项目编辑器中运行一个项目
当您在设计一个数据采集项目时,您可以使用Run project工具栏按钮来从Visual Web Ripper中运行项目。
这是一个简单的运行和调试项目的方法,因为它允许您在提取数据的同时查看web浏览器,它还允许您访问调试窗口,在那里您可以查看关于数据提取过程的详细信息。
运行项目选项 | Run Project Options |
---|---|
Default data extractor |
1.WebBrowser: web浏览器代理使用本地Internet Explorer控件从一个网站中提取数据。这个数据收集器在可视编辑器中显示一个页面,因此通常非常准确。它加载并执行javascript,并处理AJAX。 2.WebCrawler: web爬行器代理非常快,但是它不加载JavaScript,也不处理AJAX。如果一个网页包含了无效的HTML语法,那么它可能会以不同的方式浏览网页,与它在视觉编辑器中的显示方式不同。您可以在可视化编辑器中打开web爬虫模式,以查看web爬虫收集器如何查看一个网页。 3.InternetExplorer:Internet Explorer代理与web浏览器代理类似,但它使用Internet Explorer的真实实例从一个网站中提取数据。 |
View web browser | 在提取数据时显示web浏览器,这样您就可以跟踪代理如何在网站上导航。提取的数据在web浏览器中被标记。 |
Debugging | 打开调试窗口,让您可以访问调试窗口。 |
Debug level | 指定在调试窗口中显示的详细信息。 |
Pause data extraction | 当某个条件为真时,暂停处理。 |
Pause | 您可以在任何时候单击暂停按钮来暂停处理。暂停之后,您必须单击Continue按钮继续进行处理。 |
采集内容
您可以配置一个数据采集项目,通过向模板中添加内容元素来从一个页面中提取内容。您可以通过使用其中的一种方法向模板添加内容元素:
- 右键单击web浏览器中的HTML元素,并从上下文菜单中选择Add Content。
- 左键单击web浏览器中的HTML元素,并单击元素窗口中的New按钮。
- 当您在web浏览器中单击HTML元素时,按下Shift键。
在您添加了类型元素的内容元素之后,您可以从选项窗口中选择捕获类型。Visual Web Ripper可以从选定的HTML元素中提取任何属性,如文本、HTML或元素属性。
微调内容选择Fine-Tuning a Content Selection
内容可能位于单一类型的网页上的多个位置。例如,您可能有几个页面的搜索结果,其中的内容选择从第一个页面中提取内容,而不是在下面的页面中。在这种情况下,您需要手动调整内容选择,以便对搜索结果中的所有页面都有效。
内容转换Content Transformation
内容转换脚本通常与内容元素一起使用,以修改提取的数据。内容转换脚本可以从提取的数据中提取较小的片段。例如,一个HTML元素可能包含一个完整的地址。内容元素将完整的地址提取到一个数据字段中,但是您可以使用内容转换从完整的地址提取状态或邮政编码。
导航网站 Navigating a Website
Visual Web Ripper 使用模板浏览网站。当Visual Web Ripper打开一个模板时,它会通过点击相关的链接或Web表单按钮来导航到一个新的网页。如果模板是一个列表模板,那么Visual Web Ripper就会遍历列表中的所有链接,从而导航到所有的链接。
您可以使用以下模板来配置一个数据提取项目来导航一个网站:
- Link template: 这是最常用的模板。它点击一个链接,以便导航到一个新的网页。模板可以是一个列表模板,它可以选择一个链接列表。
- FormSubmit template: 该模板用于提交web表单。
- PageNavigation template: 例如,该模板用于导航搜索结果中的页面。模板单击页面导航中的所有链接,或者在下一页链接中单击。
- Redirect template: 这个模板很少被使用,但是它会导航到一个直接的URL。
- Root template: 当您创建一个新的数据提取项目,并且模板导航到开始URL时,这个模板就会自动创建。
您可以通过单击浏览器工具栏按钮中的导航来打开 Visual Web Ripper Web浏览器中的手动导航,但是这个特性只在以下两种情况下使用。
- 当您想要导航并设置数据提取项目的开始URL时,请在浏览器工具栏按钮中使用导航。通常,这是在创建新数据提取项目时执行的第一个步骤。
- 当您想要测试带有特定URL的模板时,请在浏览器工具栏按钮中使用导航。当您打开一个链接列表模板时,Visual Web Ripper 将导航到列表中的第一个URL。有时,您可能希望使用不同的URL打开模板。您可以通过打开模板并使用手动导航导航到另一个URL来实现这一点。
正如上面所提到的,当你打开一个链接模板,它与一个链接列表相关联时,Visual Web Ripper 会导航到列表中的第一个链接。如果您想要Visual Web Ripper 导航到列表中的另一个链接,您可以在打开模板之前点击Web浏览器中的特定链接。Visual Web Ripper 导航到列表中选择的链接。确保在web浏览器中选择一个链接元素,而不是一个不同的元素类型。
开始URLs Start URLs
一个数据提取项目的开始URL指向一个项目在启动时将导航的网页。开始URL必须是一个直接的URL,不能包含任何会话信息。例如,你不能登录一个网站,导航到一个网页,然后使用这个网页的URL作为开始的URL。在这个场景中,您必须使用登录页面的URL作为开始URL,然后在您的项目中添加模板,以便导航到您想要开始提取数据的页面。
项目的根模板(root template)包含关于开始URL的信息。当打开根模板时,Visual Web Ripper 会导航到开始的URL。当您创建一个新的数据提取项目时,将自动创建根模板。当根模板打开时,您可以使用地址栏输入开始URL。
如果根模板是打开的,您也可以通过在Visual Web Ripper Web浏览器中打开手动导航来导航到开始URL。通过单击浏览器工具栏按钮中的导航打开手动导航。
多个开始URLs Multiple Start URLs
一个数据提取项目可以有多个启动urls。您可以输入一个开始urls的静态列表,或者输入来自输入数据源的起始url,例如CSV文件或数据库。
Following Pagination Links 分布链接
一个显示搜索结果的网站经常使用分页来允许用户在搜索结果中前进。
下面的图片显示了Google搜索的分页。
Visual Web Ripper 可以使用pagenavigation导航模板来跟踪所有的分页链接。pagenavigation导航航模板从不包含任何子内容或子模板,但只是简单地重复它的父模板,用于每个分页链接。
上面所示的项目配置继续处理每个分页链接的PageArea列表模板。
Visual Web Ripper支持四种类型的分页:
- Next Page navigation 下一页导航
- Single Link navigation 单链接导航
- List of Links navigation 列表链接导航
- Dynamic List of Links navigation 动态列表链接导航
下一页导航是最常见的,当网站有一个Next Page | 下一页
链接,它会把你转到导航的下一个页面时,应该使用它。pagenavigation 导航模板应该选择网页上的下一页链接。下一页的pagenavigation模板自动地将过滤器应用到选择中,因此选择XPath通常最后看起来是这样的://A[.= 'Next >>']
。您不需要知道XPath语法来使用这个特性,但是这样的XPath确保了一个很好的、健壮的选择,它可以很好地适应页面上的变化。
单链接导航(Single Link navigation)类似于下一页导航,但是它不应用选择过滤器。尽管很少使用,但是在选择过滤器自动应用到下一页选择不合适的场景中,单个链接pagenavigation导航模板可以很有用。
列表链接导航(List of Links navigation)在没有下一页链接的地方使用,但是只有一个页面链接的列表。页面链接的链接列表必须选择导航中的每个链接,因此应该是一个列表模板。
有时一个网站显示了前十个导航页面,然后又有一个链接到下一个十个导航页面。在这种情况下,您必须使用两个分页导航模板:第一个是链接pagenavigation 导航模板的列表,它选择了前10个导航页面,第二个是选择下一页(Next Page)链接的下一页或单个链接pageNavigation导航模板。
在没有下一页链接的情况下,链接导航的动态列表会被使用,但是只有一个页面链接列表和列表中的页码会随着你在导航中向前移动而动态变化。Google搜索提供了动态分页的一个很好的例子。请注意,Google搜索也有一个下一页链接。在这种情况下,您应该使用下一个页面导航,但是链接导航的动态列表也会起作用。
使用启动新Web浏览器选项 Start New Web Browser
启动新的web浏览器选项通常可以用于加快web浏览器模式中的数据提取,在处理某些网站的分页时有时也需要这个选项。例如,你可能有一个搜索结果列表,上面有详细的链接和标准的页面导航,但是每次你点击一个细节链接,然后返回到搜索结果,这个网站会自动移到第1页,而不是停留在当前页面上。这意味着Visual Web Ripper 将进入一个无限循环并继续处理第1页。为了避免这个问题,您需要确保Visual Web Ripper 不会离开搜索结果页面,而是在一个新的Web浏览器中加载细节页面。您可以通过在打开详细页面的链接模板上设置新的web浏览器选项来实现这一点。
web爬虫收集器总是使用一个新的web爬虫实例来从一个新的网页中提取数据,因此新的web浏览器选项在web爬虫模式中没有影响。有关更多信息,请参见主题数据收集器。
提交web表单 Submitting Web Forms
Visual Web Ripper可以多次提交web表单,以用于任何输入值的组合。您可以将输入值指定为一个静态的值列表,或者您可以从输入数据源中输入值,例如数据库或CSV文件。
FormSubmit模板用于提交任何web表单,如登录表单或搜索表单。FormSubmit模板通常有相关的FormField内容元素。这些内容元素选择表单输入元素,并指定表单输入值。
按照以下两个步骤配置一个数据提取项目来提交表单:
- 添加一个表单提交模板,选择表单提交按钮。
- 为您想要提供输入值的每个表单字段添加内容元素。
FormField内容元素有相应的输出数据字段,其中包含输入值。如果您不想将输入值写入数据输出,那么可以重新设置Save Content选项。
FormSubmit模板通常选择类型提交的输入HTML元素。Visual Web Ripper 点击输入元素来提交表单。有时,网站使用JavaScript提交表单,在这种情况下,提交HTML元素可能是任何HTML元素。如果网站不使用输入HTML元素作为提交元素,Visual Web Ripper 可能会识别出被选中的HTML元素作为一个链接,你将不得不把模板类型从链接更改为FormSubmit。
FormSubmit模板为表单字段输入值的每个组合提交一个web表单。在设计一个项目时,您可以在Visual Web Ripper 捕获窗口中设置表单字段输入值。每个输入值应该由一条新行分隔。例如,如果您想为表单提交5个输入值,那么FormField内容元素的捕获窗口应该是这样的:
当您添加一个选择HTML下拉菜单的FormField元素时,Visual Web Ripper会自动为下拉菜单中的所有值提交表单。如果您选择FormField选项来迭代所有的列表值,您可以看到捕获窗口中列出的所有下拉菜单值。如果您想在下拉菜单中只提交几个值的表单,则需要重置选项迭代所有的列表值,然后从捕获窗口中删除多余的条目。
FormField Actions
有些网站有表单字段自动提交web表单。例如,搜索结果页面可能有一个下拉框,可以设置显示在搜索结果页面的数量,或一个下拉框,允许您控制结果集的排序顺序。一旦你选择下拉框中的值,web表单自动提交,你无须点击提交按钮。
按照以下步骤配置一个项目,在一个下拉框中设置一个值,然后自动提交web表单。
- 为下拉框添加一个FormField内容元素。
- 重置FormField选项,迭代所有的列表值,并在捕获窗口中输入所需的下拉值。
- 为FormField元素设置一个动作。这可以是一个完整的页面加载操作或JavaScript操作。
- 添加一个FormSubmit模板,并将表单类型设置为Auto submit。
在表单提交上下载一个文件
有时表单提交会导致文件下载。在这种情况下,当单击表单提交按钮时将出现一个“Save As”对话框。这个对话框将阻止Visual Web Ripper 正确处理网站。
下面的高级模板选项用于配置一个项目来下载文件,而不是显示“Save As”对话框。
当在表单提交时下载文件时,必须设置固定的文件扩展Fixed file extension
选项。
提交选项的下载文件Download file on submit
仅由web爬虫代理和版本2的WebBrowser代理提供支持。在使用版本2的WebBrowser代理时,您必须设置项目选项来修改web浏览器的行为Modify web browser behavior
。
上传文件 Uploading Files
一些web表单包含文件上传框,允许用户将文件上传到网站。文件上传框不能被脚本操作所操纵,因此它们需要以不同于其他web表单输入框的方式处理。
按照以下步骤为您的项目添加一个文件上传FormField。
- 在web浏览器中选择文件上传输入框,并向您的项目添加一个FormField内容元素。
- 输入您想要在捕获窗口中上传的文件的路径。您还可以从输入数据源加载文件路径。
- 将FormField动作设置为JavaScript和AJAX。
- 在advanced options选项卡中设置FormField选项“文件上载”到true。
上传文件的web表单不能提交到一个新的浏览器窗口,因此这样的web表单将始终在当前的浏览器窗口中打开。
案例 Web Form Examples
- 提交一个输入值列表的Web表单
- 级联Ajax下拉菜单
- 提交带有单选按钮或复选框列表的Web表单
处理网站登录 Handling Website Logins
VWR(Visual Web Ripper)可以处理网站的登录表单,因为它可以处理任何其他的web表单。按照以下三个步骤配置一个数据提取项目,以登录一个网站:
- 添加一个选择Login按钮的FormSubmit模板。
- 添加一个FormField内容元素,选择用户名表单字段。在捕获窗口中输入用户名。
- 添加一个FormField内容元素来选择密码表单字段。在捕获窗口中输入密码。
基于windows的验证 Basic Windows Authentication
一些网站使用基本的Windows认证,它们将显示一个Windows登录框。Internet Explorer不再允许您直接在URL中嵌入身份验证:
http://username:password@www.domain.com/index.html
VWR允许您在项目选项的Advanced选项卡上设置基本Windows身份验证的用户名和密码。
您必须设置项目选项来修改默认的web浏览器运行Modify default web browser behavior
,以使Windows身份验证生效。