序言
爬虫技术,在当今的互联网里面是占据着非常重要的位置的。那什么是爬虫呢?亦即是按照一种特定的脚本,请求指定的网页并获取数据的一段程序。而我们今天这个分享呢,就是利用node的几个模块,配合mpvue实现小程序的爬虫功能。
需求分析
1. 爬虫目标
利用扫码的功能从获取图书的豆瓣信息,同时将其信息显示出来。
利用豆瓣api将下面网站的书籍信息进行同步。
2. 任务风险与预估工作量
爬取豆瓣信息是否有网络阻塞?如何解决异常处理?功能难点在哪处?完成的工作量是多少?
这是项目研发过程中特别重要的一个环节,因为是影响程序员是否能准时交付工作的原因,相信很多老铁包括Eknow在工作中经常遇到工作延期的情况,任何不可预估的风险都应该在前期评估完,这样在项目进行时才能够保证任务的完成系数。当然要完成这一环节,可以考虑下Excel、xmind来进行可观评估。
3. 扮演角色
锁定功能的亮点,在项目中占据的位置
完成项目中某个功能,理想状态来讲,是需要对这个功能的熟悉程度了然于胸的,甚至需要比任何人都要懂。这样的状态,离不开需求讨论,功能设计以及编码经验的。
流程设计
1. 技术实现
1.既然需要用node来实现爬虫,我们可以选择http模块以及cherrio模块;2. 扫码时获取的book_id需要传到后台进行校验;3. 带上参数book_id请求豆瓣api获取相应的数据;4. 存储在mysql数据库里面;5. 筛选需要的图书信息进行显示。
2. 分析url
爬取数据的前提便是得到api的url信息,同时进行接口分析,通过获取数据的返回值进行字段分析,得到所需要字段的信息。
编码
1. 首先,编写扫码、添加图书的方法
需要调用api获取扫码图书的ID信息,同时在addBook的方法里将ID值作为参数传给后台,进行添加成功的提示处理。
export default {
methods: {
scanBook(){
wx.scanCode({
success (res) {
this.addBook(res.result);
}
})
},
async addBook(data){
const res=await this.request('/weapp/addBook','post',data);
if (res.code===0&&res.data.title) {
wx.showToast({
title: `${res.data.title}添加成功`,
icon: 'success',
duration: 2000
})
}
},
request(url,methods,data){
return new Promise((resolve,reject)=>{
wx.request({
url: url,
methods,
data: data,
success (res) {
if (res.data.code === 0) {
resolve(res.data);
}else{
reject(res.data);
}
}
})
})
},
}
}
复制代码
2. 后台处理得到的ID值,同时进行豆瓣信息的爬取
找到本地server的文件目录,在routes/index.js里面新增一个方法。
router.post('/addbook',controllers.addbook);
复制代码
接着在controllers目录下新建一个文件为addbook.js,作为控制器,使用node的模块https去获取豆瓣信息。
module.exports = async (ctx)=>{
const {isbn,openid} = ctx.request.body;
if(isbn &&openid){
let url = 'https://api.douban.com/v2/book/isbn/'+isbn
const bookinfo = await getJSON(url)
const rate = bookinfo.rating.average
const { title, image, alt, publisher, summary ,price} = bookinfo
}
}
function getJSON(url){
return new Promise((reslove,reject)=>{
https.get(url,res=>{
let urlData = ''
res.on('data', data=>{
urlData += data
})
res.on('end', data=>{
const bookinfo = JSON.parse(urlData)
if(bookinfo.title){
reslove(bookinfo)
}
reject(bookinfo)
})
})
})
}
复制代码
测试结果
结语
至此,一个简单的爬虫功能便已经实现了,其中也归纳了爬虫的基本处理方式,也算是对数据挖掘这一块有了基础的认知。大前端也有往数据领域发展的分支,就看各位老铁的意向如何咯。
老铁们也可以在后台回复【爬虫】获取源码,希望我们可以一起进一步地进行交流。
推荐文章
想高效开发小程序,mpvue了解下(一)
想高效开发小程序,mpvue了解下(二)
用mpvue实现一个简单的demo
初探Mpvue的组件、样式机制