微信小程序云函数传递数组_微信小程序云开发,不借助额外服务端爬虫实现小说阅读小程序...

3c18a5c4313b77cec524ccfcfb41c488.png

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

0c298db25b3e9629e6efad773511e84d.png

云控制台:

42ef2751203b8aacf43fa5042dd801e6.png

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

28b3aadda38c6170b3da03a017144138.png

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('gb2312'); //取决于网页的编码方式

const data = result.text || '';

const $ = cheerio.load(result.text);

let hotList = $('.hot').find('.image');

let classifyList = $('.block');

let hotData = [];//热榜

let classifyData = [];//分类推荐

for (let i = 0; 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 = 0; i < classifyList.length; i++) {

let obj = {};

let childData = []

let childDom = $(classifyList[i]).find('.lis').find('li');

for (let j = 0; j < childDom.length;j++){

let chilObj = {};

chilObj['name'] = $(childDom[j]).find('.s2').find('a').text();

chilObj['url'] = $(childDom[j]).find('.s2').find('a').attr('href');

chilObj['autho'] = $(childDom[j]).find('.s3').text();

childData.push(chilObj);

}

obj['classifyList'] = $(classifyList[i]).find('h2').text();//类别名称

// obj['childDom'] = childDom.length;

obj['data'] = childData;

classifyData.push(obj)

}

return {

classifyData,

hotData

};

}

果然是没问题的,不过中间需要注意开始npm的构建,还可以引入ui,推荐vantui,基本功能都有,中间由于有些编码问题做了一些处理,上面是我云函数的代码,下面是如何调用云函数:

918c6ea6c9db193ed277f51af1be4904.png

主要代码: 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)})

},

中间还涉及到阅读记录的保存,于是我简单实用了云数据库:

0fe9b20e39116bb1953fe069568a50fc.png

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

3719086381fee27dd3c5c79ca1e6c5d2.png

今天分享到此。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值