约30行代码实现一个简单nodejs爬虫工具,定时抓取网页数据。
使用npm模块
request---简单http请求客户端。(轻量级)
fs---nodejs文件模块。
index.js
var request = require('request'); var fs = require("fs"); var JJurl = "https://recommender-api-ms.juejin.im/v1/get_recommended_entry?suid=6bYFY7IRbfmijiJeeeIQ&ab=welcome_3&src=web" var title = "" var options = { uri: JJurl, headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36', }, json: true }; setInterval(function() { request(options, function(error, response, body) { if (!error) { for (var i in body.d) { title += body.d[i].title + "\n" } fs.writeFile('./result.txt', title, function(err) { if (err) { throw err; } }); } else { console.log('抓取失败') } }); }, 5000);
补充:服务端反爬虫技术
1.判断headers 中的参数。
2.检查cookies存在。
3.通过ip地址或者用户帐号。
PS:不知是不是为了反爬虫才让用户强制登录。
通过flash的形式与服务端交互应该比较少见。
ajax请求后对数据进行混淆,前端是不可能加密的。
客户端爬虫技术
1.可以伪造请求头的参数。设置用户代理等参数,具体可以查看浏览器请求。
2.可以保存服务端回传cookie,可以保存cookie,以便请求携带cookie。
3.可以使用代理服务器去请求。但用户帐号不好伪造。