程序员

少儿不宜:让我们来简书啪啪啪

2017-02-26  本文已影响276人  MarkNote

tags:应用

哎呀,才发现我的输入法很奇葩,我本来想写“爬爬爬”的,怎么输入成“啪啪啪”了呢?

不管了,像下面这样少儿不宜的内容,也只能在简书的编辑们休息的时候偷偷发表了。

是这样的,我准备从简书抓点她没提供的内容,因此想从头做一个爬虫。

考虑到javascript是最好的语言,所以决定用javascript。在github 上简单搜了一下,发现node-crawler 是star排名第一的爬虫。简单看了一下,发现这个包貌似不错,事前的爬和事后的解析貌似都可以做。就用它了。

首先,假设你的 node/NPM已经配置好。如何没有配置好的话,找一篇node入门教程看看吧。

第二步,创建一个package.json文件,内容很简单:

{
  "name": "简书爬虫", //名字随便取的
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "MIT",
  "dependencies": {
    "crawler": "^1.0.3"
  }
}

第三步, 创建app.js,内容也很简单:

var Crawler = require("crawler")
var url = require('url')

var c = new Crawler({
    maxConnections : 10,
    callback : function (error, res, done) {
        if(error){
            console.log(error)
        }else{
            this.proccedResponse(res)
        }
        done()
    },
    proccedResponse:function(res){
        var $ = res.$
        console.log($("title").text())
      
        var that = this
        $('a').each(function(index, a) {
                   var url =  $(a).attr('href')
                   if (typeof url != 'undefined' 
                    && url.indexOf('jianshu.com')>0
                    
                   ){
                        that.procceedUrl(url)
                   }
         })
    },
    procceedUrl: function(url){
        
            console.log('proceed:'+url)
            c.queue(url)
        
    }
})

c.queue('http://www.jianshu.com')

代码少得令人发指:先抓简书首页,然后分析网页内容中所有的a标签,有href的继续抓。简单的不像爬虫:)

好了,现在可以运行你的爬虫了。
在终端中运行node app.js看到了什么?是不是很多很多的title和标题?恭喜你,成功了。

后续你可以对这个爬虫做各种改进,前途不可限量。当然了,小心别被简叔看到,否则被封IP或者删账号我就没办法了,哈哈!

上一篇下一篇

猜你喜欢

热点阅读