Node.js学习——爬虫

1.实验目的

    使用Node.js实现一个简单的爬虫。

2.实验方法

    通过request模块获取HTML页面,然后通过cheerio模块解析HTML页面获取图片的src地址,最后再次通过request模块获取图片并将其保存到文件夹中。

3.实验环境

    windows10操作系统
    node.js v8.9.4版本

4.实验步骤

    4.1. 环境安装

npm install request
npm install cheerio
npm install iconv-lite

    4.2. 获取HTML页面

const request = require("request");
const url = "http://www.netbian.com/desk/21245.htm";

request(url, function(error, response, body) {
    if(!error && response) {
        console.log(body);
    }
});
图一 爬取结果

          可以看到,爬取结果中出现了中文乱码的问题,所以需要对其进行转码。
          这里我们使用iconv-lite模块来解决这个问题。

const request = require("request");
const iconv = require("iconv-lite");
const url = "http://www.netbian.com/desk/21245.htm";

request({url: url, encoding: null}, function(err, res, body) {
    if(!err && res) {
        let newBody = iconv.decode(body, "gb2312");  //转成gb2312编码
        console.log(newBody);
    }
});

图二 爬取结果(重新编码)

    4.3. 分析DOM模型获取图片的src地址
图三 DOM模型

          由图三分析,我们采用 $("div[class= pic] img") 来选定图片。

const request = require("request");
const iconv = require("iconv-lite");
const cheerio = require("cheerio");
const url = "http://www.netbian.com/desk/21245.htm";

request({url: url, encoding: null}, function(err, res, body) {
    if(!err && res) {
        let newBody = iconv.decode(body, "gb2312");
        let $ = cheerio.load(newBody);  //选定分析的DOM模型
        console.log($("div[class= pic] img").attr("src"));  //获取图片的src地址
    }
});
图四 图片的src地址

    4.4. 将图片保存在文件夹中
          最后,我们通过path模块设置路径并通过fs模块将图片保存到文件夹中。

const request = require("request");
const iconv = require("iconv-lite");
const cheerio = require("cheerio");
const path = require("path");
const fs = require("fs");

const url = "http://www.netbian.com/desk/21245.htm";

request({url: url, encoding: null}, function(err, res, body) {
    if(!err && res) {
        let newBody = iconv.decode(body, "gb2312");
        let $ = cheerio.load(newBody);
        let src = $("div[class= pic] img").attr("src");
        let suffix = src.split('.').pop();  //获取图片的后缀名
         //路径为当前文件夹下的girl.后缀文件
        let position = path.join(__dirname, "girl" + "." + suffix); 
        request(src).pipe(fs.createWriteStream(position));  //将图片写入文件夹中
    }
});
图五 爬取图片

5 .参考文献

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.基础知识 爬虫爬虫,是一种自动获取网页内容的程序,是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上就是针对...
    JunChow520阅读 903评论 0 1
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,924评论 2 45
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    wgl0419阅读 6,627评论 1 9
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,886评论 25 708
  • 想必大家都知道,雄安新区在建,据说发展趋势极好,而且我和爱人所处的公司也在那边新筹备了子公司,现在也正招兵买马,从...
    宸辰工坊阅读 302评论 2 1

友情链接更多精彩内容