V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
haixu7
V2EX  ›  问与答

关于 node.js 爬虫

  •  
  •   haixu7 · 2016-07-09 16:24:01 +08:00 · 2991 次点击
    这是一个创建于 3050 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前端小白,因为想找一份前端开发的工作,所以想用 node.js 做一个爬虫,爬取拉勾网上的招聘职位的信息,再做一个在线图形化的展示,现在只能通过手动修改 pn 得到某一页的 json 数据。所以想请教一下大家,通过什么方法能把所有页面自动遍历一遍呢,然后得到的 json 数据通过什么方式存起来?现在只能单纯的 console.log(),是需要用数据库吗?数据库的内容又怎么拿出来呢,而且本地数据库的信息好像也没办法做成在线的网页展示呀?

    var http = require('http');
    var url = 'http://www.lagou.com/jobs/positionAjax.jsonpx=default&first=true&city=%E5%8C%97%E4%BA%AC&pn=2&kd=%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91'
    
    var jobData = [];
    http.get(url, function(res) {
    var html = '';
    
    res.on('data', function(data){
    	html += data;
    });
    
    res.on('end', function() {
    	var json = JSON.parse(html);
    	var aResult = json.content.positionResult.result;
    	aResult.forEach(function (item) {
    		// console.log(item.companyName);
    		// console.log(item.salary);
    		// console.log(item.workYear+'\n');
    
    		jobData.push({'companyName': item.companyName, 'salary': item.salary, 'workYear': item.workYear});
    	});
    	console.log(jobData);
    });
    }).on('error', function() {
    console.log('获取失败');
    });
    
    10 条回复    2016-07-09 23:43:19 +08:00
    shiny
        1
    shiny  
       2016-07-09 16:33:44 +08:00
    我做过的爬虫:

    1 、使用 ES6 语法 http://es6.ruanyifeng.com/
    2 、使用 Queue 做并发控制 http://caolan.github.io/async/docs.html#.queue
    3 、数据库用 MySQL 入库
    4 、内容展示可以使用 Web 框架,类似 ExpressJS http://expressjs.com/ 或者 ThinkJS https://thinkjs.org

    SQL 、 Web 框架实际上是后端的事情,你要找前端工作,首先不应该是折腾前端上的么…
    haixu7
        2
    haixu7  
    OP
       2016-07-09 16:38:20 +08:00
    @shiny 谢谢指点!因为上个月刚毕业。。我在想是不是可以做个爬虫,出去面试的时候也算是自己的一个小项目。
    banricho
        3
    banricho  
       2016-07-09 16:54:28 +08:00 via Android
    Node.js 不是后端吗😂
    haixu7
        4
    haixu7  
    OP
       2016-07-09 17:00:02 +08:00
    @banricho 话说我发错力了。。?我只是想在面试的时候有一个拿得出手的小项目
    xwartz
        5
    xwartz  
       2016-07-09 17:20:52 +08:00
    很早之前写过一个爬图的 https://github.com/xwartz/spider , 也就是解析下 html 或者 xml 。


    图形展现的话可以用 [echarts]( http://echarts.baidu.com/api.html#echarts)
    DoraJDJ
        6
    DoraJDJ  
       2016-07-09 17:25:23 +08:00 via Android
    @haixu7 没, Node.js 不仅可以写后端也可以写桌面和命令行应用的。
    可以看看 Atom 、 VSCode 这些应用,都是用 Electron ( Node.js 的桌面应用库)写的
    johnhsm2333
        7
    johnhsm2333  
       2016-07-09 18:51:40 +08:00 via Android
    @DoraJDJ 那个的话,我认为是把 nodejs 融合到浏览器里面去了。纯 nodejs 还是写后端比较多。
    DoraJDJ
        8
    DoraJDJ  
       2016-07-09 18:55:17 +08:00
    @johnhsm2333 嗯, Electron 还有 Nw.js 这些东西就是弄了一个简单的浏览器窗口,然后界面用 HTML 写,后端用 Node.js 。
    fyh1807008
        9
    fyh1807008  
       2016-07-09 20:07:34 +08:00
    为了找前端工作的话, nodejs 加分权重太低,吃力不讨好。不如鼓捣 angualrjs,reactjs 。
    简单粗暴的话, jquery 用用好也能找到工作
    haixu7
        10
    haixu7  
    OP
       2016-07-09 23:43:19 +08:00
    @fyh1807008 好的。我明白了~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4081 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 05:24 · PVG 13:24 · LAX 21:24 · JFK 00:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.