nodejs之爬虫

Posted rrrjc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs之爬虫相关的知识,希望对你有一定的参考价值。

//引入http
const http = require("http");
//引入https
const https = require("https");
//引入url
const url = require("url");
//引入path
const path = require("path");
//引入fs
const fs = require("fs");

//准备网址
const targetUrl = "http://www.nipic.com/photo/jianzhu/shinei/index.html?page=1";
//http或https的情况
const req = url.parse(targetUrl).protocol == "http:" ? http : https;
// console.log(req);
//get请求数据
req.get(targetUrl, (rs) => 
    //保存请求到的数据
    let str = "";
    //获取网页数据
    rs.on("data", (data) => 
        str += data;
    )
    //监听结束
    rs.on("end", () => 
        //定义正则
        let reg = /<img src="(.*?)" data-src="(.*?)"  alt="(.*?)" \/>/img;
        // 定义变量 用于保存每一次匹配的结果
        let result;
        // 定义一个存储图片地址的数组
        let imgarr = [];
        //遍历
        while ((result = reg.exec(str)) != null) 
            imgarr.push(result[2]);  // 把爬取到的图片地址放入一个数组
        
        // console.log(imgarr);
        
        //循环数组
        for(let i in imgarr)
            // console.log(imgarr[i]);
            // //再次请求拿到所有图片
            setTimeout(function()
                req.get(imgarr[i], (rs) => 
                    // 重命名文件
                    let rename = new Date().getTime()+path.extname(imgarr[i])
                    // console.log(rename);
                    
                    //创建写入流
                    let ws = fs.createWriteStream(`./download/$rename`);
                    rs.pipe(ws)
                    console.log("文件下载中");
                )
            ,100*i)
            
        
    )
)

 

以上是关于nodejs之爬虫的主要内容,如果未能解决你的问题,请参考以下文章

Nodejs爬虫进阶教程之异步并发控制

nodeJS爬虫前端爬虫系列

nodeJS实现简易爬虫

nodejs怎么才能用爬虫爬取https网页

NodeJS爬虫入门

如何使用nodejs做爬虫程序