闲来无事爬了下通讯录 试手 jsdom

curl http://xxx.com/address/addresslist?search=%40 --cookie oa_cookie=123  -s| node parss
.js

  

js 代码

var jsdom = require('jsdom')
    ,fs = require('fs')
process.stdin.setEncoding('utf8');

var html = ''
process.stdin.on('readable', function() {
    var chunk = process.stdin.read();
    if (chunk !== null) html += chunk
});
var userlist = require('./userlist.json')
    ,userHash = JSON.parse(JSON.stringify(userlist) )

process.stdin.on('end', function() {

    process.stdout.write('
');
    jsdom.env(html,
      function (errors, window) {
        var list = []
        var l = window.document.querySelectorAll('#userlist tr')
        for (var i = 0 ; i < l.length ;i ++ ){
            var li = l[i].getElementsByTagName('td')
            if (!li || li.length < 8) continue
            var user_id = li[0].textContent
            var user = {
                "name" : li[2].textContent
                , "dep" : li[4].textContent
                , "email" : li[3].textContent
                , "phone" : li[6].textContent
                , "qq" : li[7].textContent.trim()
                }
            if (user_id in userlist ) {
                delete userHash[user_id]
                continue
            }
            user.join = +new Date()
            userlist[user_id] = user
            process.stdout.write('
 入职:' + JSON.stringify(user))

        }
        var quits = JSON.stringify(userHash)
        if ('{}' != quits)    {
            var leaves = quires('./leaves.json')
            for (var id in userHash){
                leaves[id] = userHash[id]
                }
            fs.writeFile('./leaves.json' , JSON.stringify(leaves ,null , 4) )
            process.stdout.write('
  离职:' + quits)
        }
        fs.writeFile('./userlist.json' , JSON.stringify(userlist ,null , 4) )
        process.stdout.write('
end');
      }
    )
})

jsdom 官网 https://github.com/tmpvar/jsdom

原文地址:https://www.cnblogs.com/vaal-water/p/3811746.html