关于我
疯狂减肥带
伪前端一只 欢迎调戏
乐天派 但贫穷的钱包限制了享受
希望自己每月能纳1W块的税
© 2017 HAOTOWN-疯狂减肥带
鲁ICP备18046940号

Node.js简单小爬虫练习

爬虫的话 无非就两个步奏 获取数据 和 请求数据

在node中 可直接使用http模块的http.get写入就用的mysql 方便简单

我就把目光转向了国内某弹幕网站的用户数据

这里直接f12抓到了api由于此网站备案被吊销 主站地址为国外的反带 这里直接替换为国内域名 并格式化返回的json
link


{
    "userjson": {
        "currExp": 1425, 
        "stows": 3413, 
        "comments": 309, 
        "gender": 1, 
        "level": 8, 
        "sign": "高冷如我", 
        "follows": 24, 
        "lastLoginDate": "2016-11-01 14:31:31.0", 
        "avatar": "http://cdn.aixifan.com/dotnet/artemis/u/cms/www/201609/19213511bt8gmp0l.jpg", 
        "posts": 9, 
        "followed": 0, 
        "lastLoginIp": "60.214.115.*", 
        "fans": 2, 
        "uid": 1292455, 
        "regTime": "2015-04-25 22:11:49.0", 
        "nextLevelNeed": 1700, 
        "name": "疯狂减肥带", 
        "dTime": "", 
        "expPercent": 8, 
        "isFriend": 0, 
        "views": 61065
    }, 
    "success": true}

json一目了然 至于success可以做判定用户是否获取成功使用


var web='
var start=0
http.get(web+start, function(res) {
  var jsonx=''
  res.on('data', function(data) {
   jsonx+=data
  })
 res.on('end',function(){
  jsony=JSON.parse(jsonx);
  if (jsony.success) {
  //成功执行的操作
   }
  else{
     console.log('eero user not found')
  }
  }).on('error', function(e) {
  console.error(e);
   console.log('eero web server not found')
})

http.get请求就此完成
写入数据库使用的mysql库 使用前需要使用npm安装
按照官方介绍 链接数据库


var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '',
  database : 'acfun'//数据库名
});
connection.connect();

在执行成功的地方 执行数据库命令


  var acfunuser=jsony.userjson;//这里直接把json的userjson赋值 方便直接调用
    //数据库添加命令 其中INSERT INTO `acfun`.`user` 中的acfun为数据库名 user为表名
    connection.query("INSERT INTO `acfun`.`user` (`uid`, `name`, `level`, `currExp`, `sign`, `posts`, `comments`, `follows`, `fans`, `lastLoginDate`, `regTime`, `comeFrom`, `views`) VALUES ("+acfunuser.uid+",'"+acfunuser.name+"',"+ acfunuser.level+","+ acfunuser.currExp+",'"+ acfunuser.sign+"',"+acfunuser.posts+", "+acfunuser.comments+","+acfunuser.follows+","+acfunuser.fans+",'"+acfunuser.lastLoginDate+"','"+acfunuser.regTime+"','"+acfunuser.comeFrom+"',"+ acfunuser.views+")", function(err, rows, fields) {
    console.log('uid: '+acfunuser.uid+'  mysql write success')
     //这里为了执行过程中发生数据库无法写入(一般是有重复值)导致程序报错就注释掉了
    //if (err) throw err;

这样还只是爬去单个用户数据

只要用setInterval(getjson,10)重复执行就可以了 并在执行完毕后使start自增加 start++就可以了

完整代码

github

发表于
分类:教程
评论
已喜欢
朗读
微博分享 复制链接 二維碼