当前位置:   article > 正文

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

autox.js

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

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

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

一、前期准备

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

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

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

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

  1. function  Bmob(url,  appId,  restKey)  {  
  2. this.baseUrl  =  url;  
  3. this.appId  =  appId;  
  4. this.restKey  =  restKey;
  5. }
  6. Bmob.prototype.makeRequest  =   function (method,  url,  json,  sessionToken,  callback)  {  
  7. url  =  this.baseUrl  +  url;  
  8. var  options  =   {};  
  9. options.contentType  =  "application/json";  
  10. options.method  =  method;  
  11. if  (json)  {    
  12. options.body  =  JSON.stringify(json);  
  13. }  
  14. sessionToken  =  sessionToken  ||  "";  
  15. options.headers  =   {    
  16. "X-Bmob-Application-Id":  this.appId,
  17.     "X-Bmob-REST-API-Key":  this.restKey,
  18.     "Content-Type":   "application/json",
  19.   
  20. }  
  21. return  http.request(url,  options,  callback);
  22. }
  23. // 添加数据
  24. Bmob.prototype.createObject  =   function (className,  data)  {  
  25. return  this.makeRequest("POST",  "/classes/"  +  className,  data).body.json();
  26. }
  27. // 查询表数据
  28. Bmob.prototype.getObjects  =   function (className)  {  
  29. return  this.makeRequest("GET",  "/classes/"  +  className).body.json();
  30. }
  31. // 查询ID数据
  32. Bmob.prototype.getObject  =   function (className,  id)  {  
  33. return  this.makeRequest("GET",  "/classes/"  +  className  +  "/"  +  id).body.json();
  34. }
  35. //条件查询
  36. Bmob.prototype.queryObject  =   function (className,  data)  {  
  37. let  url  =  encodeURI(util.format('/classes/%s/?where=%j',  className,  data));  
  38. return  this.makeRequest("GET",  url,  null).body.json();
  39. }
  40. // 更新数据
  41. Bmob.prototype.updateObject  =   function (className,  objectId,  data)  {  
  42. return  this.makeRequest("PUT",  "/classes/"  +  className  +  "/"  +  objectId,  data).body.json();
  43. }
  44. // 删除数据
  45. Bmob.prototype.deleteObject  =   function (className,  data)  {  
  46. var  id  =  typeof (data)  ==  "string"  ?  data  :  data.objectId;  
  47. return  this.makeRequest("DELETE",  "/classes/"  +  className  +  "/"  +  id).body.json();
  48. }
  49. module.exports.Bmob  =  Bmob

三、引用bmobsdk.js类

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

  1. var  {  
  2. Bmob
  3. }  =  require('bmobsdk.js');
  4. var b = new Bmob('https://api.codenow.cn/1', '3315840d184f17036594d2f265ba39e0', '10e012d17a82e7454a0ee79cf1cf195f');
  5. log(b.getObject('Person'));

最终效果如下:

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/880581
推荐阅读
相关标签
  

闽ICP备14008679号