当前位置: 首页 > 后端技术 > Node.js

node.js爬取网页内容(用于微信小程序云开发)

时间:2023-04-03 19:57:53 Node.js

目前正在研究微信小程序的云开发功能。云开发最大的优势就是不需要搭建前端服务器,可以利用云的能力编写一个可以从头上线的微信小程序,免去购买服务器的成本。对于个人来说,尝试从前端到后端去实践微信小程序的开发还是不错的选择。一天上线一个微信小程序是有可能的。云开发优势云开发为开发者提供完整的云支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的API进行核心业务开发,可实现快速上线和迭代。同时,这种能力,与开发者已经使用的云服务兼容,并不相互排斥。云开发目前提供三种基本能力的支持:云函数:代码运行在云端,微信私有协议自然认证,开发者只需编写自己的业务逻辑代码函数中读写JSON数据库存储:直接上传/下载在小程序前端管理云文件,在云开发控制台可视化管理。介绍了这么多关于云开发的知识,有情绪的同学可以研究一下。官方文档地址:https://developers.weixin.qq...网页内容抓取小程序是回答问题的,所以问题来源有问题。在网上搜了下,一个题目一个一个的贴,是一种方法,但是这样的重复劳动,估计贴10个左右就想放弃了。于是我想到了网页抓取。刚拿起之前学过的节点。必备工具:Cheerio。一个类似于服务器端JQuery的包。主要用于对爬取的内容进行分析和过滤。节点的fs模块。这是node自带的一个模块,用来读写文件的。这里用来将解析后的数据写入json文件。Axios(可选)。用于抓取网站的HTML页面。因为我要的数据是在网页上点击一个按钮后渲染出来的,直接访问这个网址是抓不到的。无奈,只能复制想要的内容,保存为字符串,解析字符串。接下来就可以使用npminit初始化一个node项目,一路回车后,就可以生成一个package.json文件了。然后npminstall--saveaxioscheerio安装cheerio和axios包。关键是用cheerio实现了一个jquery-like的功能。只要cheerio.load(quesitons)抓取的内容,然后就可以根据jquery的操作去获取dom,组装成你想要的数据。最后使用fs.writeFile将数据保存到json文件中,就大功告成了。具体代码如下:letaxios=require("axios");letcheerio=require("cheerio");letfs=require("fs");//我的html结构大致如下,有很多piecesofdataconstquestions=`仰望明月,__________。

回首白云低
低头看家
当春天来临
红掌拨清波__________,但是巴山晚上下雨的时候。何党一起剪西窗烛愿做西窗相思鸟天空人间情趣薄如纱两岸青山两岸相对.........`;常量$=cheerio.负载(问题);变量arr=[];对于(vari=0;i<300;i++){varobj={};obj.quesitons=$("#q"+i).find(".question").text();obj.A=$($("#q"+i).find(".answer")[0].text();obj.B=$($("#q"+i).find(".answer")[1].text();obj.C=$($("#q"+i).find(".answer")[2]).text();obj.D=$($("#q"+i).find(".answer")[3]).text();obj.index=i+1;obj.answer=$($("#q"+i).find(".answer")[0]).attr("value")==1?"A":$($("#q"+i).find(".answer")[1]).attr("值")==1?"B":$($("#q"+i).find(".answer")[2]).attr("value")==1?“C”:“D”;arr.push(obj);}fs.writeFile("poem.json",JSON.stringify(arr),err=>{if(err)throwerr;console.log("json文件保存成功!");});保存为json后的文件格式如下,方便上传到云服务器有图片说明注意事项微信小程序云开发的数据库,需要注意上传的json文件的数据格式.之前一直提示格式不对。后来发现JSON数据不是数组,而是类似于JSONLines,即每个记录对象用n分隔,不是逗号。所以需要对node写的json文件做一点处理,才能上传成功。