概要

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

下载例子

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

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

java -jar mydict.war

启动之后,打开浏览器,输入网址http://localhost:8080/打开一个登录页面。如下图所示:

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

编写登录和检查会话脚本

点击“采集管理》网站管理”,点击“添加”按扭,添加名为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抓取数据的动作持续进行下去。

Golddata如何采集需要登录/会话的数据?的更多相关文章

  1. 性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据

    基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据   by:授客 QQ:1033553122 实现功能 测试环境 环境搭建 使用前提 使用方法 运行程序 效果展 ...

  2. IDEA项目搭建十二——站点用户登录会话实现

    一.简介 前两天写了一篇用户登录会话设计的脑图,这次就把这个引入到项目中实现,总体来说需要几步先罗列一下: 1.需要一个Cookie工具类用于读写cookie 2.需要一个Cache工具类用于在服务端 ...

  3. 远程映射错误 “发生系统错误 1312 指定的登录会话不存在。可能已被终止 IIS 访问 远程共享目录”

    最近和其他公司做接口,需要将数据上传给对方. 我们发送程序部署在前置机上,文件在内网数据中.需要映射到文件服务器后上传数据.本机vs开发是可以映射成功,但是部署到远程的IIS中,就不能成功. 报错:  ...

  4. 从统计局采集最新的省市区镇数据,用js在浏览器中运行 V2

    本文描述的是对国家统计局于2019-01-31发布的<2018年统计用区划代码和城乡划分代码(截止2018年10月31日)>的采集. 相对于用于和采集2016版.2017版的js代码做了比 ...

  5. Session 起航 登录会话和注销请求 重定向和转发

    [LoginServlet] @WebServlet(name="loginServlet",urlPatterns = "/login") public cl ...

  6. IIS SSL证书 指定的登录会话不存在,可能已被终止 HRESULT:0x80070520

    指定的登录会话不存在,可能已被终止 HRESULT:0x80070520 IIS导入证书时,选择”允许导出此证书” 服务器证书名称,在mmc控制台中个人证书中命名

  7. “必须执行Init_Clk函数,才能采集到二氧化碳接口485数据的问题”的解决

    这个问题困扰了我很长一段时间,而且如果这个问题不解决,就有一个无法调和的矛盾:执行Init_Clk函数,能采集到二氧化碳接口485数据,但是功耗大:不执行Init_Clk函数,不能采集到二氧化碳接口4 ...

  8. 从统计局采集最新的省市区县数据,纯js

    本文更新(移步查阅): 19-04-15 新采集了2018的省市区三级坐标和行政区域边界 19-03-22 采集了2018的城市数据 18-11-28 采集了2017的城市数据 数据下载 GitHub ...

  9. Android之MVP模式实现登录和网络数据加载

    MVP简介 相信大家对 MVC 都是比较熟悉了:M-Model-模型.V-View-视图.C-Controller-控制器,MVP作为MVC的演化版本,也是作为用户界面(用户层)的实现模式,那么类似的 ...

随机推荐

  1. SVN的正确提交方式

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Rundy_Deng/article/details/80338093 也会让我们百思不得其解,甚至耽 ...

  2. ionic项目编译打包(android平台)

    ionic项目相关开发工作完成之后(建立ionic工程项目可以参考上一篇文章ionic项目工程建立),就可以进行项目的编译打包apk应用包. 打包编译需要在平台环境下,这里只记录下android平台打 ...

  3. Linux 系统安装[Redhat]

    系统下载 Linux操作系统各版本ISO镜像下载 系统安装 1.1. 分区知识 1.2. 磁盘分区命名以及编号 IDE盘:  hda  第一块盘 hda1/第一块盘的第一个分区 hdb  第二块盘 h ...

  4. 以太网的 MAC 层

    一.MAC 层的硬件地址 在局域网中,主机的硬件地址又称为物理地址,或 MAC 地址.6个字节. IEEE 的注册管理机构 RA 负责向厂家分配地址字段的前三个字节(即高位 24 位,组织唯一标识符O ...

  5. ZT I Believe I Can Fly(我相信我能飞)

    I Believe I Can Fly(我相信我能飞) 歌手:R. Kelly(罗 凯利) 歌词部分 I used to think that I could not go on 我原以为我无法坚持下 ...

  6. Vim常用命令记录

    (本文仅记录了Vim常用的按键功能和操作,用于备忘和查阅.若为Vim小白,建议先通过列出的参考资源获得对Vim更全面的了解.Vi 是几乎所有Linux发行版都支持的文字编辑工具,也是许多Linux下工 ...

  7. calayer 的特殊属性整理

    calayer: An object that manages image-based content and allows you to perform animations on that con ...

  8. 关于c++ list容器的操作摸索

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/chaoweilanmao/article/details/30793859 #include< ...

  9. pwnhub_WTP攻击思路--self-xss高级利用

    1.self-xss+302跳转构造csrf的利用: 1.login.php 存在跳转2.http://54.223.108.205:23333/login.php?redirecturl=//vps ...

  10. Android绘图机制和处理技巧

    色彩特效处理 在色彩处理中,使用以下三个角度来描述一个图像. 色调: 物体传播的颜色 饱和度: 颜色的纯度, 从0(灰)到100%(饱和)来进行描述 亮度: 颜色的相对明暗程度 在Android中, ...