爬虫技术,在当今的互联网里面是占据着非常重要的位置的。那什么是爬虫呢?亦即是按照一种特定的脚本,请求指定的网页并获取数据的一段程序。而我们今天这个分享呢,就是利用node的几个模块,配合mpvue实现小程序的爬虫功能。
利用扫码的功能从获取图书的豆瓣信息,同时将其信息显示出来。
利用豆瓣api将下面网站的书籍信息进行同步。
爬取豆瓣信息是否有网络阻塞?如何解决异常处理?功能难点在哪处?完成的工作量是多少?
这是项目研发过程中特别重要的一个环节,因为是影响程序员是否能准时交付工作的原因,相信很多老铁包括Eknow在工作中经常遇到工作延期的情况,任何不可预估的风险都应该在前期评估完,这样在项目进行时才能够保证任务的完成系数。当然要完成这一环节,可以考虑下Excel、xmind来进行可观评估。
锁定功能的亮点,在项目中占据的位置
完成项目中某个功能,理想状态来讲,是需要对这个功能的熟悉程度了然于胸的,甚至需要比任何人都要懂。这样的状态,离不开需求讨论,功能设计以及编码经验的。
1.既然需要用node来实现爬虫,我们可以选择http模块以及cherrio模块;2. 扫码时获取的book_id需要传到后台进行校验;3. 带上参数book_id请求豆瓣api获取相应的数据;4. 存储在mysql数据库里面;5. 筛选需要的图书信息进行显示。
爬取数据的前提便是得到api的url信息,同时进行接口分析,通过获取数据的返回值进行字段分析,得到所需要字段的信息。
需要调用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); } } }) }) }, } }
找到本地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的组件、样式机制