自动采集编写(GoldData配制登录和检查会话的数据集有什么区别?)
优采云 发布时间: 2022-04-15 09:45自动采集编写(GoldData配制登录和检查会话的数据集有什么区别?)
概括
本文将介绍GoldData的*敏*感*词*登录功能对采集必填网站数据的使用。GoldData的*敏*感*词*登录功能是指通过脚本进行登录。如果需要手动输入验证码或其他内容,可以通过收发邮件的方式进行登录。
下载示例
为了解释方便,我们使用采集mydict的数据一词来解释需要登录的采集网站数据。mydict示例程序可以从开源下载< @网站 到 ( , 或 )。
下载后打开命令行,运行以下命令启动示例程序。
java -jar mydict.war
启动后,打开浏览器输入 URL:8080/ 即可打开登录页面。如下所示:
输入用户名和密码(均为admin),即可打开首页单词列表。
编写登录和检查会话脚本
点击“采集Management”网站Management”,点击“Add”按钮,添加一个名为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 能够继续捕获数据。