Golddata怎么采集需要登入/会话的数据?
优采云 发布时间: 2020-08-14 14:05编写登陆和检测会话脚本
点击“采集管理》网站管理”,点击“添加”按扭,添加名为mydict的站点。如下所示:
接下来配制登陆和检测会话脚本,点击“设置*敏*感*词*登陆”,会打开站点*敏*感*词*登陆配制页面,如下图所示:
登录脚本如下:
//发送ajax请求验证码
var va=$ajax('http://localhost:8080/code/vcode?timestamp=1554001708730',{encoding:false});
var arg_={
label:site.name+"验证码",
type:1,
content:va.content
}
//waitForInput内置函数将发送邮件,并等待输入
//(回复邮件,或者goldData平台输入),
//并把输入内容当作验证码返回。
var code=waitForInput(arg_);
var data="username=admin&password=admin&vcode="+code
var m=new Map()
m.put('Cookie',va.cookie)
//发送ajax请求执行登录
var content=$ajax('http://localhost:8080/doLogin',{method:'POST',headers:m,data:data})
//如果正确,将返回状态1(登录成功),和headers信息给GoldData,
//否则返回0(登录失败)!
if(content.headers){
m.putAll(content.headers)
}
var ret={status:1,headers:m}
if(content.status!=200){
ret.status=0
}
ret
检查脚本如下:
var ret=true;
if(html.contains("我的单词-登录")){
ret=false
}
ret;
配制好以后,我们回到网站管理页面,点击“启动登陆”,则会开始执行“自动登入”,这以后,点击“查询”按扭来刷新页面,可以见到“等待输入”的状态。如下图所示:
此时,您设置的通知邮箱,也应当同时收到了电邮。点开电邮,或者点击页面上的“录入等待输入”按扭,将会听到如下内容:
依据电邮内容,回复电邮“{{qcxe}}”,就可以使程序继续执行。在golddata页面里输入"qcxe",效果是一样的。程序将会回到“waitForInput()”,并且返回输入的内容。
回复以后,我们将在golddata页面里,点击“查询”刷新页面,mydict的登陆状态会变为“已登陆”。如下图所示:
接下来,我们可以定义抓取规则。
定义抓取规则
在添加规则之前,我们还须要定义类似于表结构的数据集。如下图所示:
接下来,点击“采集管理》规则管理”,添加规则,打开添加规则页面,如下图所示:
抓取规则脚本如下:
[
{
__sample: http://localhost:8080/word/index?pageNum=2
match0: http\:\/\/localhost\:8080\/word\/index(\?pageNum=\d+)?
fields0:
{
__model: true
__dataset: word
__node: "#content ul >li"
sn:
{
expr: ""
attr: ""
js: md5(item.name)
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
name:
{
expr: h5
attr: ""
js: ""
__label: ""
__showOnList: true
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
uk:
{
expr: li span.uk
attr: ""
js: source.replace("uk: ",'')
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
us:
{
expr: li span.us
attr: ""
js: source.replace("us: ",'')
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
}
fields1:
{
__node: .pagination a
href:
{
expr: a
attr: abs:href
js: ""
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
}
}
]
然后点击测试,将会进行测试抓取。我们发觉数据的确被抓取到了,如下图所示:
配制抓取器抓取
这和之前是一样的,将抓取器设置抓取站点“mydict”.然后点击开始抓取。然后会在数据管理上面查看抓取的数据。
结论
GoldData*敏*感*词*登陆实质是提供了一个可以人工介入来异步获取会话的框架,既可以调用AI插口做到完全手动登入;也可以将类似于验证码须要复杂辨识须要提供输入时,直接将cookie或则token信息通过短信收发到GoldData平台(这样可以不管CAPTCHA多复杂 ),都可以使GoldData抓取数据的动作持续进行下去。