所使用的npm依赖包
其源码为
index.js的代码
var getMovies = require("./getMovies")
var fs = require("fs"); // fs模块可用于与文件系统进行交互 是node.js内部模块
getMovies().then(movies => {
var json = JSON.stringify(movies); // 转换为JSON的字符
// 将json格式的string字符保存在movie.json 的文本下,当前目录下没有movie.json的话会自动创建一个,第二个参数为数据参数
fs.writeFile("movie.json", json, function () {
console.log("成功!")
});
})
getMovies.js 的源码
const axios = require("axios");
const cheerio = require("cheerio");
/**
* 得到所有电影的html字符串
*/
async function getMoviesHtml() {
// axios 会返回一个promise对象
const resp = await axios.get("https://movie.douban.com/chart")
return resp.data;
}
/**
* 获取所有电影数据
*/
async function getMoviesData() {
const html = await getMoviesHtml();
const $ = cheerio.load(html); // 将其html运行在内置的jQuery中
var trs = $("tr.item")
var movies = [];
for (let i = 0; i < trs.length; i++) {
var tr = trs[i];
//分析每个tr的数据,得到一部电影对象
var m = getMovie($(tr));
movies.push(m);
}
return movies;
}
/**
* 分析tr,得到一部电影对象
* @param {*} tr
*/
function getMovie(tr) {
var name = tr.find("div.pl2 a").text();
name = name.replace(/\s/g, "");//去掉空白字符
name = name.split("/")[0]; // 拿取到电影名字
var imgSrc = tr.find("a.nbg img").attr("src");
var detail = tr.find("div.pl2 p.pl").text();
return {
name,
imgSrc,
detail
}
}
module.exports = getMoviesData;
运行结束后 新建movie.json