所使用的npm依赖包
    IMG_20201116_091943.jpg
    其源码为
    index.js的代码

    1. var getMovies = require("./getMovies")
    2. var fs = require("fs"); // fs模块可用于与文件系统进行交互 是node.js内部模块
    3. getMovies().then(movies => {
    4. var json = JSON.stringify(movies); // 转换为JSON的字符
    5. // 将json格式的string字符保存在movie.json 的文本下,当前目录下没有movie.json的话会自动创建一个,第二个参数为数据参数
    6. fs.writeFile("movie.json", json, function () {
    7. console.log("成功!")
    8. });
    9. })

    getMovies.js 的源码

    1. const axios = require("axios");
    2. const cheerio = require("cheerio");
    3. /**
    4. * 得到所有电影的html字符串
    5. */
    6. async function getMoviesHtml() {
    7. // axios 会返回一个promise对象
    8. const resp = await axios.get("https://movie.douban.com/chart")
    9. return resp.data;
    10. }
    11. /**
    12. * 获取所有电影数据
    13. */
    14. async function getMoviesData() {
    15. const html = await getMoviesHtml();
    16. const $ = cheerio.load(html); // 将其html运行在内置的jQuery中
    17. var trs = $("tr.item")
    18. var movies = [];
    19. for (let i = 0; i < trs.length; i++) {
    20. var tr = trs[i];
    21. //分析每个tr的数据,得到一部电影对象
    22. var m = getMovie($(tr));
    23. movies.push(m);
    24. }
    25. return movies;
    26. }
    27. /**
    28. * 分析tr,得到一部电影对象
    29. * @param {*} tr
    30. */
    31. function getMovie(tr) {
    32. var name = tr.find("div.pl2 a").text();
    33. name = name.replace(/\s/g, "");//去掉空白字符
    34. name = name.split("/")[0]; // 拿取到电影名字
    35. var imgSrc = tr.find("a.nbg img").attr("src");
    36. var detail = tr.find("div.pl2 p.pl").text();
    37. return {
    38. name,
    39. imgSrc,
    40. detail
    41. }
    42. }
    43. module.exports = getMoviesData;

    运行结束后 新建movie.json
    image.png