记录一下使用 node 写的爬虫

使用 request 模块处理 HTTP 请求

1
2
3
4
5
6
7
8
9
10
request({
// 爬一下自己的博客吧
url: "https://www.dark-wing.com/",
method: "GET"
}, (e, r, b) => {
// 如果有错误或者没有东西就返回
if(e || !b) {return;}
// 如果正确就进行下一步
// ...
})

cheerio 模块则是在服务器端像使用 jQuery 一样操作 DOM 结构

1
2
3
4
5
6
7
8
9
10
11
12
13
// 请求成功的页面
const $ = cheerio.load(b);
// 用于存放爬下来的内容
let result = [];
// 要爬的内容所在的位置
let titles = $('a.post-title','.container');
// 遍历
for(var i = 0; i < titles.length; i++) {
// 我也搞不懂为什么这样写,我是试出来的 o(╯□╰)o
// 看到有人 $(title[i]).text() 这么写,但是我没成功
let title = titles[i].children[0].data;
result.push(title);
}

最后引入 node 内置的 fs 模块,提供本地文件的读写能力

1
fs.writeFileSync("result.json", results);

中间如果需要的话再处理一下爬下来的内容,比如删删空格换行什么的

最后 node crawler 完成