nodejs | 看看豆瓣Top250电影有哪些?

简介: 前面写了`Python` 的版本,然后用 `nodejs` 页写一个吧!

前面写了Python 的版本,然后用 nodejs 页写一个吧!

思路

  • 需要知道一共有多少页
  • 爬单个页面数据处理
  • 分页爬取,循环一下单个页面数据处理就好了

代码

const axios = require("axios");
const cheerio = require("cheerio");
const fs = require("fs");
const dbUrl = "https://movie.douban.com/top250";
// 找到页数,每页25个
const findCount = async () => {
  try {
    const { status, data } = await axios.get(dbUrl);
    if (status === 200) {
      const $ = cheerio.load(data);
      const count = $(".count").text();
      return count.replace(/[^0-9]/gi, "");
    }
  } catch (error) {
    console.log("error", error.code);
    return 0;
  }
};

// 处理函数
const handleText = async (pageNum) => {
  const url = dbUrl + `?start=${pageNum}`;
  console.log(url);
  try {
    const { status, data } = await axios.get(url);
    let list = [];
    if (status === 200) {
      const $ = cheerio.load(data);
      const pic = $(".pic");
      for (let i = 0; i < pic.length; i++) {
        const element = pic[i];
        const $img = cheerio.load(element);
        const index = $img("em").text();
        const imgs = $img("img").attr();
        list.push({ index, name: imgs.alt, img: imgs.src });
      }
      return list;
    }
  } catch (error) {
    console.log("error", error.code);
    return [];
  }
};

const main = async () => {
  // 如果存在文件,则删除
  if (fs.existsSync("./douban.json")) {
    fs.unlinkSync("./douban.json");
  }
  let result = [];
  const count = (await findCount()) / 25;
  for (let i = 0; i < count; i++) {
    const listItem = await handleText(i * 25);
    result.push(...listItem);
  }
  //   追加文件
  fs.appendFileSync("./douban.json", JSON.stringify(result));
};

main();

结论

最后会在同一个文件夹下面生成一个douban.json的数组对象。
传送门:Python版本

相关文章
|
3月前
|
数据采集
豆瓣图书TOP250爬取
豆瓣图书TOP250爬取
74 0
|
6月前
|
数据采集 存储 JavaScript
(2024)豆瓣电影TOP250爬虫详细讲解和代码
这是一个关于如何用Python爬取2024年豆瓣电影Top250的详细教程。教程涵盖了生成分页URL列表和解析页面以获取电影信息的函数。`getAllPageUrl()` 生成前10页的链接,而`getMoiveListByUrl()` 使用PyQuery解析HTML,提取电影标题、封面、评价数和评分。代码示例展示了测试这些函数的方法,输出包括电影详情的字典列表。
332 3
|
6月前
|
存储 数据可视化
豆瓣电影Top250的可视化分析
本文旨在实现豆瓣电影TOP250的可视化,通过确定柱状图、折线图和饼图等图表设计,展示评价人数最多、年份分布及类型占比。模拟数据用于演示,例如评价最多的电影、年份最多的电影数量及每年高分电影趋势。完整代码可下载,包含ECharts实现的四种图表。
333 0
豆瓣电影Top250的可视化分析
|
JavaScript 数据处理 Python
Python | 看看豆瓣Top250电影有哪些?
这段时间在学习`Python` ,练习一下,爬一下豆瓣Top250的电影有哪些?
|
数据库 Python
|
Web App开发 iOS开发 Python
python之爬取某瓣前250排名电影标题
初学者练练手洒洒水
97 0
|
存储 数据采集
爬虫实例——爬取豆瓣网 top250 电影的信息
本节通过一个具体的实例来看下编写爬虫的具体过程。以爬取豆瓣网 top250 电影的信息为例,top250 电影的网址为:https://movie.douban.com/top250。在浏览器的地址栏里输入 https://movie.douban.com/top250,我们会看到如下内容:
260 0
|
数据采集 Java Python
Python爬虫之多线程下载豆瓣Top250电影图片
爬虫项目介绍   本次爬虫项目将爬取豆瓣Top250电影的图片,其网址为:https://movie.douban.com/top250, 具体页面如下图所示:   本次爬虫项目将分别不使用多线程和使用多线程来完成,通过两者的对比,显示出多线程在爬虫项目中的巨大优势。
2468 0
|
数据采集 存储 数据库
Python学习笔记:通过python爬虫获取豆瓣电影Top250
之前学习了python中的一些语法,但未有一些实际的项目,这边在B站上找了一个爬虫小项目教程,此文章简单介绍如何爬取豆瓣电影Top250
1443 1
Python学习笔记:通过python爬虫获取豆瓣电影Top250
|
存储 数据采集 开发者
简单分析豆瓣电影top250
大家好,今天打开了豆瓣电影网,突然想看看前250名的电影剧情都是那些类型的,评分都是多少,所以写了一个程序给大家一起来分享一下。
593 0
简单分析豆瓣电影top250