文章插图
最近才注意到微信小程序增加了个云开发 , 手上项目不多就赶紧试试手 , 新增加云函数和云数据库;云函数就类似于服务端 , 云函数其实就是封装了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('gb2312'); //取决于网页的编码方式
const data = https://www.isolves.com/it/cxkf/ydd/xcx/2019-08-07/result.text || '';
const $ = cheerio.load(result.text);
let hotList = $('.hot').find('.image');
let classifyList = $('.block');
let hotData = https://www.isolves.com/it/cxkf/ydd/xcx/2019-08-07/[];//热榜
let classifyData = https://www.isolves.com/it/cxkf/ydd/xcx/2019-08-07/[];//分类推荐
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 = https://www.isolves.com/it/cxkf/ydd/xcx/2019-08-07/[]
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 , 基本功能都有 , 中间由于有些编码问题做了一些处理 , 上面是我云函数的代码 , 下面是如何调用云函数:
文章插图
主要代码: 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)})
},
中间还涉及到阅读记录的保存 , 于是我简单实用了云数据库:
文章插图
代码简单示意 , 文档里面都有哈 , 我用到的两张表
文章插图
今天分享到此 。
【微信小程序云开发,不借助额外服务端爬虫实现小说阅读小程序】
推荐阅读
- 小程序页面栈详解
- 现在程序员最火的微服务架构与SpringCloud,你真的弄清楚了吗?
- 快手小店怎么找到对应主营类目,如何设置? 快手小店怎么设置商品分类
- 玻璃尿酸面膜有什么好处 小分子玻尿酸面膜的作用与功效
- 小青柑功效有何神奇的地方
- 梦见小男孩撒的尿又远又多 梦见小男孩到处撒尿
- 小青柑最出色的三种功效
- 晚上睡觉小腿肚抽筋
- 小腿肚大的原因
- 小腿肚痒是怎么回事