用node.js写一个简单爬虫,真的简单。

在网上看了几个node.js写的爬虫,嗯。。。。。还是自己写一个简单的点的把,就爬下文章,图片这些。爬取对象,是我是我以前做的一个网站。。。


需要用到的是node.js的第三方模块是。。

request,cheerio,如果用自带的http也行,只是觉得代码太多。

先npm install这两个模块吧


然后来看下主要代码架构

request(url, (error, response, body) => {

        if (error) {

            console.log(error)

        } else {

       //request模块请求到的body如果打印出来就是html页面代码,而http请求到的打印出来是一丢数字代码。

        $ = cheerio.load(body); //这句话就是。。。嗯。。。可以用类似jq的语法去操作你请求到的body了;

            var title = $(".pd-detail h2").text().replace(/\"/ig, " ");//取到文章标题

            var article = $(".ft5").text();//取到文章内容;

//然后存起来

fs.writeFile("./data/" + title + ".txt", article, (error) => {

                if (error) {

                    console.log(error);

                }

            })

//图片也是取了存起来

var images = $(".ft5 img");

            images.each(function () {

                var img_filename = $(this).attr("alt");

                var img_src = $(this).attr("src");

                request(img_src).pipe(

                    fs.createWriteStream("./image/" + img_filename)

                ); //

            })

}


这样这篇文章的东西就被爬下来了,然后你想爬很多,改改代码呗,下面贴出全部代码



var request = require("request");

var fs = require("fs");

var url =

    "http://lj.scu.edu.cn/cdwxxy1.2/index.php?app=default&act=article_view&id=0006BF5AE9ADB13D2EC36BBF60C79BDF&cate_id=C87B31A5B538412CFCAA01570A8645D8";

var cheerio = require("cheerio");

var i = 0;

function pc() {

    request(url, (error, response, body) => {

        if (error) {

            console.log(error)

        } else {

            i = i + 1;

            $ = cheerio.load(body);

            var title = $(".pd-detail h2").text().replace(/\"/ig, " ");

            var article = $(".ft5").text();

            var nextLink = $(".fz.red.am-padding-left-xs").attr("href");

            fs.writeFile("./data/" + title + ".txt", article, (error) => {

                if (error) {

                    console.log(error);

                }

            })

            var images = $(".ft5 img");

            images.each(function () {

                var img_filename = $(this).attr("alt");

                var img_src = $(this).attr("src");

                request(img_src).pipe(

                    fs.createWriteStream("./image/" + img_filename)

                ); //

            })

            console.log(i);

            if (i < 30) {

                url = nextLink;

                pc();

            }

        }

    })

}

pc()


文件目录贴个图

用node.js写一个简单爬虫,真的简单。_第1张图片
目录

在node里面,先进入文件夹根目录执行node index

嗯,然后你的data和image里面就慢慢的有东西了。

你可能感兴趣的:(用node.js写一个简单爬虫,真的简单。)