说到爬取数据(爬虫),一般都想到python,但是今天不谈论python,今天用nodejs爬取数据,以网易新闻网为例(辛苦你了)来做制作demo。
安装
npm install request fs cheerio
安装后,接下来进入正题,创建index.js
// 引入模块
const request = require('request')
const fs = require('fs')
const cheerio = require('cheerio')
// 爬取 https://news.163.com/
request('https://news.163.com/', (err, response, html) => {
if(!err && response.statusCode == 200) { // 判断成功
// 进行文件写入到 index.html
fs.writeFile('index.html', html, 'utf-8', (err) => {
if(err) throw err
console.log('success')
})
}
})
node index.js运行后,发现文件中多出一个 index.html,很成功你已经爬取了单页网易新闻网,右键运行,完美~~
好啦~到此结束
怎么可能,cheerio 还没用呢?
好,接下来进入真正的正题,再此之前,可以阅览下cheerio中文官网,使用过jq的朋友就对他的语法很有感觉。
const request = require('request')
const fs = require('fs')
const cheerio = require('cheerio')
request('https://news.163.com/', (err, response, html) => {
if(!err && response.statusCode == 200) {
const $ = cheerio.load(html);
var result = [];
// 遍历
$('.post').each((i, el) => {
// 提取数据
const date = $(el).find('.date').text();
const title = $(el).children('.post-info').children('.post-title').text();
const body = $(el).find('.post-body').text();
result.push({
id:i,
year:date,
title,
body
})
// console.log(date, title, body);
// console.log(result);
})
result = JSON.stringify(result);
// 写入 json文件
fs.writeFile('data.json', result, 'utf-8', (err) => {
if(err) throw err;
console.log('success');
})
}
})
运行后,最后生成新的json文件,得到你想要的数据文档,成功了~~