爱奇艺视频数据抓包+存储数据库-demo

    技术2023-11-22  118

    新建文件 然后打开其终端 输入命令 npm init -y npm i cheerio axios npm i mongoose npm i express

    然后开始写文件即可

    抓取数据并存入数据库

    d.js

    const axios = require("axios"); const cheerio = require("cheerio"); const mongoose = require("mongoose"); const Movie = require("./models/movie"); axios .get( "http://pcw-api.iqiyi.com/search/recommend/list?channel_id=1&data_type=1&mode=24&page_id=2&ret_num=48&session=303dcde0d3ef65c847036d6e1407016f&three_category_id=1;must" ) .then((res) => { // 如果连接是网页源代码的话 // console.log(res.data.data.list); // const $ = cheerio.load(res.data); // $(".qy-mod-li").each(function () { // const movie = {}; // // console.log($(this).find(".qy-mod-cover img").attr("src")); // movie.img = $(this).find(".qy-mod-link-wrap img").attr("src"); // movie.link = "http:" + $(this).find(".title-wrap .main a").attr("href"); // movie.title = $(this).find(".title-wrap .main a").attr("title"); // console.log(movie); // }); // 如果连接是接口的话→ 从爱奇艺网页中找到的数据接口 const movies = []; res.data.data.list.forEach((m) => { const movie = {}; movie.title = m.title; movie.desc = m.description; movie.coverImg = m.imageUrl; movie.link = m.playUrl; movie.categories = m.categories.join(","); movies.push(movie); }); // console.log(movies); mongoose .connect("mongodb://localhost:27017/vip-cartoons", { useNewUrlParser: true, useUnifiedTopology: true, }) .then((ddd) => { Movie.insertMany(movies).then(() => console.log("获取数据成功")); }); });

    movie.js

    const mongoose = require("mongoose"); const Schema = mongoose.Schema; const movieSchema = new Schema( { title: { type: String, required: true, }, desc: { type: String, default: "", }, coverImg: { type: String, default: "", }, link: { type: String, default: "", }, categories: { type: String, default: "", }, }, { timestamps: true, // 为每一条记录添加一个新增和修改的时间戳 } ); const Movie = mongoose.model("movie", movieSchema); module.exports = Movie;

    先写一个页面,调用一下接口

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <script src="https://cdn.bootcdn.net/ajax/libs/axios/0.19.2/axios.min.js"></script> <script> // 这个网址是一个接口→ 爱奇艺的接口 所以不用自己写接口 axios .get( "http://pcw-api.iqiyi.com/search/recommend/list?channel_id=1&data_type=1&mode=24&page_id=3&ret_num=48&session=303dcde0d3ef65c847036d6e1407016f&three_category_id=1;must" ) .then((res) => console.log(res)); </script> </body> </html>
    Processed: 0.014, SQL: 9