微信小程序云开发js抓取网页内容
最近在研究微信小程序的云开发功能。云开发最大的优势是不需要前端搭建服务器,可以利用云的能力编写一个可以从头上线的微信小程序,从而避免了购买服务器的成本。个人尝试从前端到后台开发微信小程序,还是不错的选择。一天就可以推出一个微信小程序。
云开发的优势
云开发为开发者提供了完整的云支持,弱化了后端和运维的概念,利用平台提供的API进行核心业务开发,无需搭建服务器,即可实现快速上线和迭代。同时,这种能力与开发人员已经使用的云服务兼容,而不是相互排斥。
云开发目前提供三种基本能力支持:
云功能:在云中运行的代码,微信私有协议的自然认证,开发者只需要编写自己的业务逻辑代码数据库:一个可以在小程序前端操作,在云中读写的JSON数据库存储功能:直接在小程序前端上传/下载云文件,在云开发控制台可视化管理。
好了,介绍了这么多关于云开发的知识,感性的同学可以学习一下。官方文档地址:https://developers.weixin.qq.
Web内容捕获
小程序是关于回答问题的,所以问题的来源是一个问题。在网上搜索,贴一个又一个的题目是一种方法,但就是这样重复的工作,估计贴了10年左右就想放弃了。于是我想到了网页抓取。就拿起之前学过的节点。
必要的工具:再见。类似于服务器端JQuery的包。主要用它来分析过滤抓取的内容。节点的fs模块。该模块附带节点,用于读写文件。这用于将解析后的数据写入json文件。Axios(不需要)。用来抓取网站的HTML页面。因为我想要的数据是通过点击网页上的一个按钮来呈现的,所以我不能通过直接访问这个网站来获得它。但是您只能复制所需的内容,将其保存为字符串,并解析该字符串。
接下来,您可以使用npm init来初始化一个节点项目,在一路返回之后,您可以生成一个package.json文件。然后npm install -保存axios cheerio以安装cherio和axios包。
关键是使用cheerio实现类似jquery的功能。只需点击你已经抓取的内容cheerio.load(quesitons),然后你就可以根据jquery获取dom并组装你想要的数据。
最后,用fs.writeFile将数据保存在json文件中,就完成了。
具体代码如下:
让axios=require(axios);
让cherio=require(cherio);
让fs=require(fs);
//我的html结构大致如下,有很多条数据。
常量问题=
`;
const $=cheerio . load(quesitons);
var arr=[];
for(var I=0;i 300I){ var obj={ };obj.quesitons=$(#q i)。查找(。问题)。text();物体。A=$($(#q i)。查找(。答)[0])。text();物体。B=$($(#q i)。查找(。答)[1])。text();物体。C=$($(#q i)。查找(。答)[2])。text();物体。D=$($(#q i)。查找(。答)[3])。text();obj . index=I 1;obj.answer=$($(#q i)。查找(。答)[0])。attr(值)=1?A : $($(#q i)。查找(。答)[1])。attr(值)=1?B : $($(#q i)。查找(。答)[2])。attr(值)=1?c :D;arr . push(obj);}
fs.writeFile(poem.json,JSON.stringify(arr),err={ if(err)throw err;Console.log(json文件已成功保存!);
});
保存到json的文件格式如下,这样可以通过json文件上传到云服务器。
需要注意的事项
在微信小程序云开发的数据库中,需要注意上传json文件的数据格式。在此之前,我们总是表示格式错误。后来我们发现JSON数据不是数组,而是类似于JSON Lines,即每个记录对象用n而不是逗号分隔。因此,在上传成功之前,需要对节点编写的json文件做一点处理。
版权声明:微信小程序云开发js抓取网页内容是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。