js抓取网页内容(一个微信小程序的云开发功能是不需要前端搭建服务器)

优采云 发布时间: 2022-03-02 20:16

  js抓取网页内容(一个微信小程序的云开发功能是不需要前端搭建服务器)

  最近在研究微信小程序的云开发功能。云开发最大的优势就是不需要搭建前端服务器,可以利用云的能力编写一个可以从零启动的微信小程序,从而避免了购买服务器的成本。个人觉得从前端到后端开发微信小程序是个不错的选择。一天就能上线一个微信小程序。

  云开发的优势

  云开发为开发者提供完整的云支持,弱化后端和运维的概念,利用平台提供的API进行核心业务开发,无需搭建服务器,实现快速上线和迭代。同时,此功能与开发人员已经使用的云服务兼容,而不是相互排斥。

  云开发目前提供三种基本能力支持:

  云功能:代码运行在云端,微信私有协议自然认证,开发者只需要编写自己的业务逻辑代码数据库:可以在小程序前端操作的JSON数据库,云端读写小程序前端上传/下载云文件,并在云开发控制台中可视化管理。

  嗯,介绍了这么多云开发的知识,感性的同学可以学习一下。官方文档地址:

  网页内容捕获

  小程序是关于回答问题的,所以问题的来源就是问题。上网一搜,一个接一个的发帖是一种方法,但是就是这么重复的工作,估计发帖10年左右,就想放弃了。所以我想到了网络抓取。只需拿起你之前学过的节点。

  必备工具:再见。一个类似于服务器端 JQuery 的包。主要用于分析和过滤爬取的内容。Node 的 fs 模块。该模块带有用于读取和写入文件的节点。这用于将解析后的数据写入 json 文件。Axios(非必需)。用于抓取 网站 的 HTML 页面。由于我想要的数据是通过点击网页上的一个按钮来呈现的,所以直接访问这个网站是无法得到的。但是您只能复制您想要的内容,将其保存为字符串,然后解析该字符串。

  接下来可以使用npm init来初始化一个node项目,一路回去之后就可以生成一个package.json文件了。然后 npm install -save axioscheerio 来安装 cherio 和 axios 包。

  关键是使用cheerio来实现类似jQuery的功能。只需点击你刮过cheerio.load(quesitons)的内容,然后你就可以根据jquery获取dom并组装你想要的数据。

  最后,使用 fs.writeFile 将数据保存在 json 文件中,就完成了。

  具体代码如下:

  让 axios = 要求(axios);

  让 cherio = 要求(cherio);

  让 fs = 要求(fs);

  //我的html结构大致如下,有很多条数据。

  不断的问题=

  `;

  常量 $=cheerio.load(问题);

  var arr = [];

  for(var I=0; i 300I){ var obj={ }; obj.questions=$(#qi)。查找(.问题)。文本(); 目的。A=$($(#qi).Find(.answer)[0])。文本(); 目的。B=$($(#qi).Find(.answer)[1])。文本(); 目的。C=$($(#qi).Find(.answer)[2])。文本(); 目的。D=$($(#qi).Find(.answer)[3])。text();obj.index=I 1;obj.answer=$($(#qi).find(.answer)[0])。属性(值)=1?答:$($(#qi).Find(.answer)[1])。属性(值)=1?B : $($(#qi).Find(.answer)[2])。属性(值)=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文件做一点处理。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线