赞
踩
最近公司开发内部使用的自动化程序,使用到了selenium、pyautogui和autoxjs。
selenium进行网页元素操控的过程中,遇到了很多的坑,包括目标网站的反爬虫机制问题、页面跳转过程中dom的实际加载问题、XPATH的实际查找问题等等, 看了很多selenium webdriver操控chrome的教程,基本上大部分是雷同的,针对反爬虫方面的策略几乎完全没有写到过,很怀疑写文章的是不是真正用selenium做过项目。最后还是在chatgpt的帮助下,反反复复不断去尝试,才比较妥善的解决了这些问题。
由于本人还没有整理好selenium反反爬虫等的相关的资料,本文并不打算介绍这块的实战经验,而是介绍如何用autoxjs进行云控,获取数据的问题。网络上关于autoxjs从云端进行数据操作的文章并不多,希望这篇文章能够对需要的人有所帮助。
由于前期的数据存储在Bmob后端云,所以我这边需要从Bmob后端云获取到application id和rest key信息。
此外,还要了解Bmob后端云的数据API接口文档。
下面的这个类直接从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
有了这个类,我们就可以在我们的主程序中使用了,下面仅仅演示从Person表中获取全部数据,打印在日志文件中。
- var {
- Bmob
- } = require('bmobsdk.js');
- var b = new Bmob('https://api.codenow.cn/1', '3315840d184f17036594d2f265ba39e0', '10e012d17a82e7454a0ee79cf1cf195f');
-
- log(b.getObject('Person'));
最终效果如下:
欢迎有兴趣研究云控或者自动化的朋友沟通交流。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。