面向小白编程:初识 Node.js 之爬取豆瓣 Top250 电影信息

什么是Node?

官方描绘:Node.js is an open-source, cross-platform JavaScript runtime environment.

翻译过来就是:Node.js 是一个开源的、跨渠道的 JavaScript 运转环境。

当咱们议论 Node.js 时,能够把它幻想成一种能让你用 JavaScript 运转在服务器上的技能。这可能会让你感到古怪,因为通常咱们认为 JavaScript 是在网页上履行的脚本语言。

简而言之,Node.js 是一个让 JavaScript 能够在服务器端运转的渠道。这给开发者供给了一个强大而灵活的东西,能够用同一种语言编写前端和后端的代码。

Node 优点总结如下:

  1. JavaScript 在服务器上运转: 以前,JavaScript 首要用于网页上的交互。但是,Node.js 让JavaScript能够在服务器上运转,履行像处理文件、衔接数据库、发送电子邮件等服务器端使命。
  2. 事情驱动和非堵塞 I/O: Node.js 运用事情驱动和非堵塞I/O的办法来处理恳求。这意味着它能够同时处理多个恳求,而不用等候一个恳求完成后再处理下一个。这使得 Node.js 十分高效。
  3. 构建可伸缩的网络运用: 因为其异步非堵塞的特性,Node.js 十分适合构建实时的、可伸缩的网络运用,比如聊天运用、在线游戏等。
  4. 包管理东西 npm: Node.js 附带了一个名为 npm 的包管理东西,它使得在项目中运用和共享代码变得十分简单。开发者能够轻松地安装、更新和共享代码包。
  5. 社区支撑: Node.js 有一个庞大的开发者社区,这意味着你能够轻松地找到大量的开源代码、东西和资源,然后更快地构建你的运用。

总的来说,Node.js 是一个强大的东西,它使得用 JavaScript 构建全栈运用变得更加简单和高效。

Node.js 官方网站(中文版):www.nodejs.com.cn/

面向小白编程:初识 Node.js 之爬取豆瓣 Top250 电影信息

npm 包管理东西

npm 是 Node.js 自带的包管理东西,因为 Node 的内置模块仅供给了一些底层的 API,导致在依据内置模块进行项目开发时,功率太低,所以第三方模块(包)依据内置模块,封装出了更高档更方便的 API,极大提高了开发功率,npm 是世界上最大的开源库生态体系之一,具有数以百万计的包,供咱们程序员运用。

咱们能够在浏览器打开 npm 官方网站 www.npmjs.com/

面向小白编程:初识 Node.js 之爬取豆瓣 Top250 电影信息

在搜索框中咱们能够依据自己的需求,查找自己需求的包。

咱们拿 glob 包做个演示:

面向小白编程:初识 Node.js 之爬取豆瓣 Top250 电影信息

这个页面会介绍这个包的功能以及代码完成样例。假如咱们想运用这个包,应该先下载到自己的文件夹下,咱们找到右边的 Install 窗口,仿制这行代码,来到终端粘贴运转 npm i glob ,然后就能在文件夹下看到新增了两个 json 文件和一个 node_modules 文件夹,这儿面存放了咱们的包信息,然后就能在咱们的入口文件(index.js)中导入包了。

面向小白编程:初识 Node.js 之爬取豆瓣 Top250 电影信息

假如下载包速度过慢,可能会导致超时下载失利,能够挑选换源操作。下面我来介绍一种换源操作:

1. 检查源

首先咱们先看看源指向哪里:

npm config get registry

果然如此应该是默许是指向https://registry.npmjs.org/ 即官方源。

2. 替换源

咱们能够挑选任意国内源即可(其间部分源可能现已失效)。

淘宝 NPM 镜像:registry.npm.taobao.org
阿里云 NPM 镜像:npm.aliyun.com
腾讯云 NPM 镜像:mirrors.cloud.tencent.com/npm/
华为云 NPM 镜像:mirrors.huaweicloud.com/repository/…
网易 NPM 镜像:mirrors.163.com/npm/
中科院大学开源镜像站:mirrors.ustc.edu.cn/
清华大学开源镜像站:mirrors.tuna.tsinghua.edu.cn/

换完源咱们再进行 npm i glob 下包操作,应该就能够解决这个问题了。

Node 爬虫

步入正题。

今日咱们爬取的是豆瓣的 Top250 电影信息,首先咱们来到豆瓣电影Top250网页。

面向小白编程:初识 Node.js 之爬取豆瓣 Top250 电影信息

1.挑选需求爬取的页面元素

咱们能够依据自己的需求,在检查页面查找自己想要爬取的内容,这儿咱们用爬取电影名评分图片举例

面向小白编程:初识 Node.js 之爬取豆瓣 Top250 电影信息

2.导入模块

咱们在一个空文件夹下创立一个 index.js 文件,这儿咱们需求导入三个模块:httpsfscheerio,其间httpsfs是 Node 内置模块,cheerio是第三方模块,需求手动从 npm 中导入。

https模块的首要作用是用于处理 HTTPS 恳求,下图是 node 官方文档,具体介绍了用法及完成。(https 安全超文本传输协议 | Node.js API 文档

面向小白编程:初识 Node.js 之爬取豆瓣 Top250 电影信息

fs内置模块,用于读写文件,下图是 node 官方文档,具体介绍了用法及完成。(fs 文件体系 | Node.js API 文档

面向小白编程:初识 Node.js 之爬取豆瓣 Top250 电影信息

cheerio 模块用于在服务器端运用 jQuery 语法解析 HTML,下图是 nmp 官方文档,具体介绍了用法及完成。(cheerio – npm

面向小白编程:初识 Node.js 之爬取豆瓣 Top250 电影信息

3.代码完成:

const https = require('https'); // 引进 https 模块
const cheerio = require('cheerio'); // 引进 cheerio 模块
const fs = require('fs'); //引进文件体系模块
// 发起 HTTPS 恳求,获取豆瓣Top250电影页面的 HTML 内容
https.get('https://movie.douban.com/top250',(res)=>{
    let html = ''
    // 监听 'data' 事情,当接纳到数据时触发,拼接数据到 html 变量
    res.on('data',(chunk)=>{
        html  = chunk; //强行把十六进制转换成十进制页面代码
    })
    // 监听 'end' 事情,当数据接纳结束时触发
    res.on('end',()=>{
        // 运用 cheerio.load() 办法加载 HTML 内容,回来一个相似 jQuery 的对象
        const $ = cheerio.load(html);
        // 用于存储电影信息的数组
        const result = []
        // 运用 cheerio 挑选器遍历每个电影条目
        $('li .item').each(function(){
            // 从当时电影条目中提取标题、评分和图片链接
            const title = $('.info .title',this).text() //标题
            const star = $('.info .bd .rating_num',this).text() //评分
            const pic = $('.pic img',this).attr('src') //图片
            // 将提取的信息组成对象并添加到成果数组中
            result.push(
                {
                    title,
                    star,
                    pic
                }
            )
        })
        // 将成果数组以 JSON 格局写入文件
        fs.writeFile('./list.json', JSON.stringify(result),(err,data)=>{
            if(err){
                throw err 
            }
            console.log('文件写入成功!');
        })
    })
})

4.成果展示

面向小白编程:初识 Node.js 之爬取豆瓣 Top250 电影信息

最后

当你成功运转这段 Node.js 代码时,你现已迈出了运用 JavaScript 后端运用的一大步。

希望这篇文章能够为你供给了一个简单而有用的入门指南,让你更了解 Node.js,并激发了你深入学习的兴趣。假如你有任何疑问或想要了解更多,不要犹豫,参加社区,查阅文档,与其他开发者沟通,共同生长。

已将学习代码放入Gitee,欢迎我们学习辅导!!!

技能小白记录学习过程,有过错或不解的地方还请评论区留言,假如这篇文章对你有所协助请 “点赞 收藏 重视”,感谢支撑!!