本教程仅供学习,禁止用于其他用途
使用 superagent 与 cheerio两个库 模拟用户访问
-
在config.json 中添加自己的博客地址(我的博客页的网址)
-
安装依赖,开始跑即可
此次demo所有代码都上传到GitHub中,有需要的同学自取,记得给个star噢,传送门
分析代码组成
1.初始化
init() {
return new Promise((resolve, reject) => {
var _this = this
//读取文件博客地址
var data = fs.readFileSync('config.json', 'utf-8')
this.baseURL = JSON.parse(JSON.parse(JSON.stringify(data))).blogURL
//获取博客列表的URL地址
superagent
.get(this.baseURL)
.then((res) => {
const $ = cheerio.load(res.text)
var list = $('.article-list').find('.article-item-box')
list.each(function () {
var href = $(this).find('a').attr('href')
_this.blogs.push(href)
})
resolve(_this.baseURL)
})
.catch((e) => {
console.log(e)
})
})
}
- 引入 fs 模块 读取config配置
- 使用superagent 访问获取博客页的html
- 使用cheerio 将html 解析
- 操作DOM 获取博客列表的URL,将其保存
2.访问
// 访问
visit() {
this.blogs.map((item, index) => {
superagent
.get(item)
.then((res) => {
console.log('success')
})
.catch((e) => {
console.log(e)
})
})
}
- 没有啥好说的了,就是对URL列表循环然后依次访问
3.全代码
var superagent = require('superagent')
const cheerio = require('cheerio')
const fs = require('fs')
class Spider {
constructor() {
this.baseURL = ''
this.blogs = []
}
init() {
return new Promise((resolve, reject) => {
var _this = this
//读取文件博客地址
var data = fs.readFileSync('config.json', 'utf-8')
this.baseURL = JSON.parse(JSON.parse(JSON.stringify(data))).blogURL
//获取博客列表的URL地址
superagent
.get(this.baseURL)
.then((res) => {
// console.log(res.text)
const $ = cheerio.load(res.text)
var list = $('.article-list').find('.article-item-box')
list.each(function () {
// console.log(this)
var href = $(this).find('a').attr('href')
_this.blogs.push(href)
})
resolve(_this.baseURL)
})
.catch((e) => {
console.log(e)
})
})
}
// 访问
visit() {
this.blogs.map((item, index) => {
superagent
.get(item)
.then((res) => {
console.log('success')
})
.catch((e) => {
console.log(e)
})
})
}
}
var spider = new Spider()
spider.init().then(() => {
setInterval(() => {
spider.visit()
}, 10000)
})