Autox.js自动化操控之——数据篇

最近公司开发内部使用的自动化程序,使用到了selenium、pyautogui和autoxjs

selenium进行网页元素操控的过程中,遇到了很多的坑,包括目标网站的反爬虫机制问题、页面跳转过程中dom的实际加载问题、XPATH的实际查找问题等等, 看了很多selenium webdriver操控chrome的教程,基本上大部分是雷同的,针对反爬虫方面的策略几乎完全没有写到过,很怀疑写文章的是不是真正用selenium做过项目。最后还是在chatgpt的帮助下,反反复复不断去尝试,才比较妥善的解决了这些问题。

由于本人还没有整理好selenium反反爬虫等的相关的资料,本文并不打算介绍这块的实战经验,而是介绍如何用autoxjs进行云控,获取数据的问题。网络上关于autoxjs从云端进行数据操作的文章并不多,希望这篇文章能够对需要的人有所帮助。

一、前期准备

由于前期的数据存储在Bmob后端云,所以我这边需要从Bmob后端云获取到application id和rest key信息。

此外,还要了解Bmob后端云的数据API接口文档

二、创建封装的类文件bmobsdk.js

下面的这个类直接从github中相关的项目中改造出来的,市面上看到的代码都不能用,所以就自己改动了一下。

function  Bmob(url,  appId,  restKey)  {  
    this.baseUrl  =  url;  
    this.appId  =  appId;  
    this.restKey  =  restKey;
}
Bmob.prototype.makeRequest  =   function (method,  url,  json,  sessionToken,  callback)  {  
    url  =  this.baseUrl  +  url;  
    var  options  =   {};  
    options.contentType  =  "application/json";  
    options.method  =  method;  
    if  (json)  {    
        options.body  =  JSON.stringify(json);  
    }  
    sessionToken  =  sessionToken  ||  "";  
    options.headers  =   {    
        "X-Bmob-Application-Id":  this.appId,
            "X-Bmob-REST-API-Key":  this.restKey,
            "Content-Type":   "application/json",
          
    }  
    return  http.request(url,  options,  callback);
}
// 添加数据
Bmob.prototype.createObject  =   function (className,  data)  {  
    return  this.makeRequest("POST",  "/classes/"  +  className,  data).body.json();
}
// 查询表数据
Bmob.prototype.getObjects  =   function (className)  {  
    return  this.makeRequest("GET",  "/classes/"  +  className).body.json();
}
// 查询ID数据
Bmob.prototype.getObject  =   function (className,  id)  {  
    return  this.makeRequest("GET",  "/classes/"  +  className  +  "/"  +  id).body.json();
}
//条件查询
Bmob.prototype.queryObject  =   function (className,  data)  {  
    let  url  =  encodeURI(util.format('/classes/%s/?where=%j',  className,  data));  
    return  this.makeRequest("GET",  url,  null).body.json();
}
// 更新数据
Bmob.prototype.updateObject  =   function (className,  objectId,  data)  {  
    return  this.makeRequest("PUT",  "/classes/"  +  className  +  "/"  +  objectId,  data).body.json();
}
// 删除数据
Bmob.prototype.deleteObject  =   function (className,  data)  {  
    var  id  =  typeof (data)  ==  "string"  ?  data  :  data.objectId;  
    return  this.makeRequest("DELETE",  "/classes/"  +  className  +  "/"  +  id).body.json();
}

module.exports.Bmob  =  Bmob

三、引用bmobsdk.js类

有了这个类,我们就可以在我们的主程序中使用了,下面仅仅演示从Person表中获取全部数据,打印在日志文件中。

var  {  
    Bmob
}  =  require('bmobsdk.js');
var b = new Bmob('https://api.codenow.cn/1', '3315840d184f17036594d2f265ba39e0', '10e012d17a82e7454a0ee79cf1cf195f');

log(b.getObject('Person'));

最终效果如下:

欢迎有兴趣研究云控或者自动化的朋友沟通交流。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值