流程:
/*
1. 请求网站
2. 将数据保存本地文件
3. 分析文件
4. 请求网站...
*/
api - http://nodejs.cn/api/http.html
视频 - https://www.bilibili.com/video/av86253852?p=11
- 爬 html
/*
1. 请求网站数据
2. 将数据保存本地文件
*/
const http = require('https') ;
const fs = require('fs') ;
let url = 'https://www.jd.com/' ; //'http://www.baidu.com' ;
http.get(url,(res) => { // res = response
// data 事件解释:http://nodejs.cn/api/stream/event_data.html , 流api:http://nodejs.cn/api/stream.html#stream_event_data
// 数据分段
// 1. 只要接受数据,就会触发 data 时间
// 2. chunk 每次接受的数据片段
let rawData = '' ;
let a = 0 ;
res.on('data' , (chunk) => {
//不断写数据
rawData += chunk.toString('utf8') ;
console.log(++a) ;
})
// 数据流传输完毕
res.on('end' ,() => {
// 将请求的数据保存到本地
fs.writeFile('./bilibili.html' , rawData ,() => {}) ;
console.log('数据流传输完毕') ;
})
}).on('error' , (e) => {
console.log('请求错误') ;
})