Golddata如何采集需要登录/会话的数据吗?

  

概要

  

本文将介绍使用GoldData半自动登录功能,来采集需要登录网站的数据.GoldData半自动登录功能,就是指通过脚本来执行登录,如果需要验证码或者其它内容需要人工输入时,可以通过收发邮件来执行登录流程。

  

下载例子

  

为了讲解方便,我们以采集mydict的单词数据来讲解采集需要登录的网站数据。这个mydict例子程序可以从开源网站下载到(https://github.com/TheGoldData/mydict/releases或https://gitee.com/golddata/mydict/attach_files)。

  

下载之后,打开命令行,运行下面的命令就可以启动例子程序。

  
 <代码类=" language-shell "> java jar mydict.war  
  

启动之后,打开浏览器,输入网址<代码> http://localhost: 8080/>   

 Golddata如何采集需要登录/会话的数据?

  

输入用户名和密码(都是admin),就可以打开首页单词列表。

  

编写登录和检查会话脚本

  

点击“采集管理》网站管理”,点击“添加”按扭,添加名为mydict的站点。如下所示:

  

 Golddata如何采集需要登录/会话的数据?

  

接下来配制登录和检查会话脚本,点击“设置半自动登录”,会打开站点半自动登录配制页面,如下图所示:

  

 Golddata如何采集需要登录/会话的数据?

  

登录脚本如下:

  
 <=坝镅詊avascript代码类>//发送ajax请求验证码
  弗吉尼亚州var=$ ajax (' http://localhost: 8080/代码/vcode ?时间戳=1554001708730 ',{编码:假});
  
  var arg_={
  标签:site.name +“验证码”,
  类型:1、
  内容:va.content
  }//waitForInput内置函数将发送邮件,并等待输入//(回复邮件,或者goldData平台输入),//并把输入内容当作验证码返回。
  var代码=waitForInput (arg_);
  
  var=" https://www.yisu.com/zixun/username=admin&password=admin&vcode=" +数据的代码
  
  var m=新地图()
  m.put(“饼干”,va.cookie)//发送ajax请求执行登录
  var=$ ajax内容(http://localhost: 8080/doLogin,{方法:“文章”,标题:m,数据:数据})//如果正确,将返回状态1(登录成功),和标题信息给GoldData,//否则返回0(登录失败)!
  如果(content.headers) {
  m.putAll (content.headers)
  }
  
  var ret={状态:1、标题:m}
  
  如果(content.status !=200) {
  ret.status=0
  }
  随著 
  

检查脚本如下:

  
 <=坝镅詊avascript代码类> var ret=true;
  如果(html.contains(“我的单词——登录”)){
  ret=false
  }
  ret;  
  

配制好之后,我们回到网站管理页面,点击“启动登录”,则会开始执行”自动登录”,这之后,点击“查询”按扭来刷新页面,可以看到”等待输入”的状态。如下图所示:

  

 Golddata如何采集需要登录/会话的数据?

  

此时,您设置的通知邮箱,也应该同时收到了邮件。点开邮件,或者点击页面上的“录入等待输入”按扭,将会看到如下内容:
 Golddata如何采集需要登录/会话的数据?

  

 Golddata如何采集需要登录/会话的数据?

  

依据邮件内容,回复邮件“{{qcxe}}”,就可以让程序继续执行。在golddata页面里输入“qcxe",效果是一样的。程序将会回到“waitForInput()”,并且返回输入的内容。

  

回复之后,我们将在golddata页面里,点击“查询”刷新页面,mydict的登录状态会变为“已登录”。如下图所示:

  

 Golddata如何采集需要登录/会话的数据?

  

接下来,我们可以定义抓取规则。

  

定义抓取规则

  

在添加规则之前,我们还需要定义类似于表结构的数据集。如下图所示:

  

 Golddata如何采集需要登录/会话的数据?

  

接下来,点击“采集管理》规则管理”,添加规则,打开添加规则页面,如下图所示:

Golddata如何采集需要登录/会话的数据吗?