最近才注意到微信小程序增加了个云开发,手上项目不多就赶紧试试手,新增加云函数和云数据库;云函数就类似于服务端,云函数其实就是封装了mongdb,不过小程序js中可以直接操作数据库,只是与云函数对的操作权限不同

云控制台:

开始我的项目,我利用云函数中科可以使用node模块,于是就试试能不能写个爬虫小程序

const cheerio = require("cheerio"); //进入cheerio模块
let charset = require(superagent-charset); //解决乱码问题:
let superagent = require(superagent); //发起请求
charset(superagent);
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
let servceUrl = "https://xxxx/"
const result = await superagent
.get(servceUrl)
.charset(gb); //取决于网页的编码方式
const data = result.text || ;
const $ = cheerio.load(result.text);
let hotList = $(.hot).find(.image);
let classifyList = $(.block);
let hotData = [];//热榜
let classifyData = [];//分类推荐
for (let i = ; i < hotList.length;i++){
let obj = {};
obj[url] = $(hotList[i]).find(a).attr(href);
obj[imgurl] = $(hotList[i]).find(img).attr(src);
obj[name] = $(hotList[i]).find(img).attr(alt);
obj[autho] = $(hotList[i]).next().find(dt).find(span).text();
obj[detail] = $(hotList[i]).next().find(dd).text();
hotData.push(obj)
}
for (let i = ; i < classifyList.length; i++) {
let obj = {};
let childData = []
let childDom = $(classifyList[i]).find(.lis).find(li);
for (let j = ; j < childDom.length;j++){
let chilObj = {};
chilObj[name] = $(childDom[j]).find(.s).find(a).text();
chilObj[url] = $(childDom[j]).find(.s).find(a).attr(href);
chilObj[autho] = $(childDom[j]).find(.s).text();
childData.push(chilObj);
}
obj[classifyList] = $(classifyList[i]).find(h).text();//类别名称
// obj[childDom] = childDom.length;
obj[data] = childData;
classifyData.push(obj)
}
return {
classifyData,
hotData
};
}
果然是没问题的,不过中间需要注意开始npm的构建,还可以引入ui,推荐vantui,基本功能都有,中间由于有些编码问题做了一些处理,上面是我云函数的代码,下面是如何调用云函数:

主要代码: wx.cloud.callFunction({
name:getList,
data:{}
}).then(res=>{
wx.hideLoading ();
console.log(res.result);
const result = res.result || {};
this.setData({
hotdata: result.hotData,
classtyf: result.classifyData
})
}).catch(err=>{
wx.hideLoading ();
console.log(err)})
},
中间还涉及到阅读记录的保存,于是我简单实用了云数据库:

代码简单示意,文档里面都有哈,我用到的两张表

今天分享到此。