用node写的爬虫(一版)

node爬虫

步骤1:正所谓“工欲善其事,必先利其器”
1)下载nodejs
2)下载JavaScript编辑器sublime
步骤2:建立工程
1)创建项目目录(我取做node_maricle)
2)在项目文件下npm init(一路Enter就行了,当然命名还是要的),完成后会生成一个package.json的文件。该文件包含了项目的基本信息。
3)安装第三方包(后面程序会直接调用包的模块)

说明:由于http模块、fs模块都是内置的包,因此不需要额外添加。

这里安装cheerio包(可以直接解析获取的html节点),和request包。

在项目文件中shift+右键进入dos中,然后
npm install cheerio –save

安装完cheerio包后,继续安装request包,
npm install request –save

说明:npm(nodejs package manager),nodejs包管理器;
–save的目的是将项目对该包的依赖写入到package.json文件中。(-g是全局安装)
现在才进入正题,爬取学校网站的学生信息。
创建子文件夹data(用来存信息)

var http = require('http');//好像没用到
var fs = require('fs');//文件操作
var cheerio = require('cheerio');//解析html
var request = require('request');//request请求
var request = request.defaults({jar: true});//!!!!特别注意这里,默认情况下,cookies是禁用的。在defaults或options将jar设为true,使后续的请求都使用cookie.
var all="";
var i=999;

request.post('http://hnust.hunbys.com/index.php/home/Public/mlogin.html', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log('登录成功!')
    start('http://hnust.hunbys.com/index.php/course/Index/userinfo/id/12740.html');
  }
}).form({email: myemail, password: mypassword})//

function start(url){
    i++;
    request.get(url, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            var $ = cheerio.load(body); //采用cheerio模块解析html
            var name = $(".pull-left h2").text().trim().substr(0,4);
            var xueyuan = $(".zy_course_rl").children().eq(0).text().trim().substr(17,15);

            var three = $(".zy_course_rl").children().eq(1).text().trim();
            indexm = three.indexOf("专业:");
            indexl = three.indexOf("|");
            var zhuanye = three.slice(indexm,indexl)//专业

            indexbj = three.indexOf("班级:")
            var banji = three.substr(indexbj,10);

            var sfz = $(".zy_course_rl").children().eq(2).text().trim().substr(3,18);
            var dh = $(".zy_course_rl").children().eq(3).text().trim();
            all += "姓名:"+name + xueyuan +"  "+zhuanye +sfz+dh+"\n";
            console.log(all);
            if (i=2000) {
                savedContent($,all);
            }           
        }
    })
    var nextLink="http://hnust.hunbys.com/index.php/course/Index/userinfo/id/" + i+".html"; 
    if (i <= 2000) {                
        start(nextLink);
    }
}
function savedContent($, news_title) { 
  //将新闻文本内容一段一段添加到/data文件夹下,并用新闻的标题来命名文件
    fs.writeFile('./data/data2.txt', all, 'utf-8', function (err) {
      if (err) {
       console.log(err);
      }
    });
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值