这里有一点 igs 在每个爬取的数据格式后面一定要加上 igs 比如以下

/<span class="search-index-L">类型(.*?)<div class="grid-12x">/igs

 

igs 是一种数据格式,如果不加上会没结果,就好比 utf-8 一样,统一的数据格式

以下可以直接爬取网站的分类和电影地址

let req = require('request')

// let htUrl = "https://www.21cake.com/"
let htUrl = "https://www.1905.com/vod/list/n_1_t_1/03p1.html"

// 封装函数进行获取爬取页面的内容
function getReq(url){
    return new Promise(function (resolve, reject){
        req.get(url,function (err,res,body){
            if (err){
                reject(err)
            } else {
                resolve({res,body})
            }
        })
    })
}

// 获取起始页的所有分类地址
async function getClass() {
    let {response,body} = await getReq(htUrl)
    // console.log(body)
    let reg = /<span class="search-index-L">类型(.*?)<div class="grid-12x">/igs
    // 爬取内容的格式,如果是这个格式就进行爬取
    let result = reg.exec(body)[1]
    let reg1 = /<a href="(.*?)".*?>(.*?)<\/a>/igs
    let res;
    let arrClass = []
    while (res = reg1.exec(result)){
        let obj = {
            className:res[2],
            url:res[1]
        }
        arrClass.push(obj)
    }
    console.log(arrClass)
}

// 通过分类,获取页面中的电影链接
async function getMov(url, moviesType) {
    let {response,body} = await  req(url)
    let reg = /<a class="pic-pack-outer" target="_blank" href="(.*?) title=“我和我的姐姐"/igs;
    let res;
    // 创建空数组用来存放爬出的电影链接
    let arrList = []
    // 这里使用 while 判断,判断是否和爬取的格式一致,如果一直就进行存放到空数组
    while(res = reg.exec(body)){
        // 使用迭代器提升性能
        arrList.push(res[1])
    }
    console.log("分类:",moviesType)
    console.log(arrList)
}


getClass()