Using Input Parameters in Data Extraction Projects
输入参数可以提供给web抓取项目,并且可以在项目内的所有脚本中使用。
输入参数可用于与项目初始化脚本初始化一个web-scraping项目为一个特定的环境中,例如设置数据库连接测试数据库在测试环境中运行时,并设置连接到生产数据库运行时在生产环境中。
可以在web抓取项目中定义特定的输入参数。所有已定义的参数都可以有一个默认值。
如果项目有任何定义的输入参数,那么当您从Visual Web Ripper 设计器中运行一个Web抓取项目时,就会出现一个参数进入屏幕。
如果您从命令行运行一个web抓取项目,您可以提供任意数量的已定义的和新的输入参数。所有的参数都可以用于项目中的脚本。如果不为已定义的参数提供值,则使用默认值。
此时,您不能为使用内置调度程序运行的项目提供输入参数。
使用输入参数改变目标数据源 Using Input Parameters to Change the Destination Data Source
您可以配置一个项目初始化脚本,以使用输入参数来更改目标数据源。该脚本只会更改所提供的数据库连接属性。例如,如果没有提供用户名,将使用默认的用户名。
在Advanced Options窗口中添加了一个项目初始化脚本。
下面的脚本确定输入参数是否存在,然后设置相应的数据库连接属性。
设置FixedValue内容来匹配输入参数Setting FixedValue Content Equal to the Value of an Input Parameter
您可以使用一个简单的内容转换脚本来设置内容元素等于输入参数的值。
using System;
using VisualWebRipper.Internal.SimpleHtmlParser;
using VisualWebRipper;
public class Script
{
public static string TransformContent(WrContentTransformationArguments args)
{
try
{
return args.InputParameters[ "par1" ];
}
catch (Exception exp)
{
args.WriteDebug(exp.Message);
return "Custom script error" ;
}
}
}
设置FormField内容来匹配输入参数Setting FormField Content Equal to the Value of an Input Parameter
您可以使用一个简单的输入转换脚本来设置一个FormField内容元素,它等于一个输入参数的值。
using System;
using VisualWebRipper.Internal.SimpleHtmlParser;
using VisualWebRipper;
public class Script
{
//See help for a definition of WrInputTransformationArguments.
public static string TransformInput(WrInputTransformationArguments args)
{
try
{
return args.InputParameters[ "par1" ];
}
catch (Exception exp)
{
args.WriteDebug(exp.Message);
return "Custom script error" ;
}
}
}
设置项目开始URL来匹配输入参数Setting the Project Start URL Equal to the Value of an Input Parameter
可以使用一个简单的项目初始化脚本,将项目启动URL设置为一个输入参数的值。
using System;
using mshtml;
using VisualWebRipper;
public class Script
{
//See help for a definition of WrProjectInitializeArguments.
public static bool InitializeProject(WrProjectInitializeArguments args)
{
try
{
if (args.InputParameters.ContainsParameter( "url" ))
args.Project.StartUrl = args.InputParameters[ "url" ];
return true ;
}
catch (Exception exp)
{
args.WriteDebug(exp.Message);
return false ;
}
}
}