前言
随着前端在工作中承担的职责不断扩大,node也成了前端进阶的必备技能,那么今天我们就来搞搞node。看完这篇文章,你将学到:
- node一些插件库的认识和使用
- 如何用node做一个简单的爬虫
好了,话不多说,接下来我们就用node搞点好玩的,兄弟萌,干就完了。
目标
做事情之前一定要目标明确,先规划一下我们要干点什么。
最近想下载点电影看看,去电影天堂去看的话,一页一页翻很是麻烦。并且众所周知程序员是一个很懒的群体,那么我们能不能通过写几行代码,把电影名称都爬下来,有想看的的直接去网站再搜索下载,答案当然是可以的。
既然目标已经确定了,下面就开始了。
代码实现
首先我们进入首页随便点进一部电影的详情,发现他的地址是https://www.dy2018.com/i/1018...。
emmmmmm,好像明白了什么,再点进其他电影的详情地址是https://www.dy2018.com/i/1018...。
那我们现在找到了它的规律,是依靠xxxxx.html来对电影进行编号访问的,那么我们接下来要做的就很简单了,只需要设定一个编号的范围,循环访问这些地址,在输出我们想要的东西就ok了。那么,好戏开场了,给👴爪巴。
// 这里请求使用request库
const originRequest = require('request');
// 为服务器特别定制的,快速、灵活、实施的jQuery核心实现
const cheerio = require('cheerio');
// iconv-lite用于在node当中处理在各种操作系统出现的各种奇特编码,该模块不提供读写文件的操作,只提供文件编码转换的功能
const iconv = require('iconv-lite');
// 接下来我们封装一下request方法,减少代码重复,方便之后调用
function request(url, cb) {
let options = {
encoding: null
}
originRequest(url, options, cb);
}
// 循环请求,获取到相应数据后进行编译拼装 这里我们爬取编号为100533--100563的30部电影名称
for(let i = 100533; i < 100563; i++) {
// 定义接口地址
let url = `https://www.dy2018.com/i/${i}.html`;
// 进行请求
request(url, (error, request, body) => {
// 将返回的内容进行编码
const html = iconv.decode(body, 'gb2312');
const $ = cheerio.load(html);
// 读出我们想要的节点内容
console.log(`名称:${$(".title_all h1").text()} --- 评分:${$('.rank').text() || 0} 分`);
})
}
好了,大功告成 接下来我们运行一下该文件, 输出一下结果:
结语
文章到这里就结束了,是不是很简单呢,觉得有兴趣的小伙伴自己下去玩一下。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。