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或者删账号我就没办法了,哈哈!