websect
- 今天就来爬去一下自己的csdn里边所有的博客2333
- 首先下载 websect
npm i websect
- 首先来分析数据的格式,基本如下:
- 文章的地址href,是不是原创type,标题title,内容简介content,发表时间date,和阅读数read_num,基本上就这6个数据
const $ = require("websect")
$.get("https://blog.csdn.net/qq_41672008").then(data=>{
var old = Date.now()
var arrs = []
$(data).find("div.article-item-box.csdn-tracking-statistics").each(el=>{
var href = $(el).find("h4 a").attr("href")
var type = $(el).find("h4 a span").text()
var title = $(el).find("h4 a").info()
var content = $(el).find("p.content a").text()
var date = $(el).find("p span.date").text().trim()
var read_num = $(el).find("p span.num").text()
arrs.push({href,type,title,content,date,read_num})
})
console.log(arrs)
console.log(Date.now() - old)
})
- 爬取结果如下:
[
{
href: 'https://blog.csdn.net/qq_41672008/article/details/103230917',
type: '原创',
title: 'websect爬取小米官网数据',
content: '\n' +
' websect\n' +
'\n' +
'首先下载websect\n' +
'\n' +
'\n' +
'npm I websect\n' +
'\n' +
'\n' +
'还是老规矩,爬取小米官网的数据QAQ,不过这一个不一样,要爬取的是这个:\n' +
'\n' +
'\n' +
'\n' +
'现在使用 websect 进行数据的爬取:\n' +
'\n' +
'const $ = require("websect")\n' +
'\n' +
'$.get(&... ',
date: '2019-11-24 23:40:03',
read_num: '2'
},
// ******************** 中间省略了很多数据 ********************
{
href: 'https://blog.csdn.net/qq_41672008/article/details/102464327',
type: '原创',
title: 'css绝对定位的参照物',
content: '\n' +
' css绝对定位的重新认知\n' +
'\n' +
'所谓的css绝对定位,就是 position:absolute;\n' +
'这里记录一个我的错误认知,就是 绝对定位的参照物是 内容,还是 内容+内边距,我一直以为 参照物就是内容,但是实际上参照物是 内容+内边距\n' +
'看看下面的事例\n' +
'\n' +
'<!DOCTYPE html&a... ',
date: '2019-10-09 16:43:58',
read_num: '17'
}
]
28 // 这是爬取数据和打印数据总共用时 28ms
- 如果不打印数据:
sataniyadeMBP:ajax sataniya$ node op
11
sataniyadeMBP:ajax sataniya$ node op
10
sataniyadeMBP:ajax sataniya$ node op
11
sataniyadeMBP:ajax sataniya$ node op
10
sataniyadeMBP:ajax sataniya$ node op
10
sataniyadeMBP:ajax sataniya$ node op
11
sataniyadeMBP:ajax sataniya$ node op
10 // 可以看见 websect 爬取数据用时为 10ms
sataniyadeMBP:ajax sataniya$
- 可以看见 websect 爬取数据用时为 10ms,这是很惊人的速度
- 接下来,轮到 cheerio 进行爬取:
const ajax = require("websect")
const cheerio = require("cheerio")
ajax.get("https://blog.csdn.net/qq_41672008").then(data=>{
var old = Date.now()
var arrs = []
var $ = cheerio.load(data)
$("div.article-item-box.csdn-tracking-statistics").each((index,el)=>{
var href = $(el).find("h4 a").attr("href")
var type = $(el).find("h4 a span").text()
var title = $(el).find("h4 a").text()
var content = $(el).find("p.content a").text()
var date = $(el).find("p span.date").text().trim()
var read_num = $(el).find("p span.num").text()
arrs.push({href,type,title,content,date,read_num})
})
console.log(arrs)
console.log(Date.now() - old)
})
[
{
href: 'https://blog.csdn.net/qq_41672008/article/details/103230917',
type: '原创',
title: '\n 原创 websect爬取小米官网数据 ',
content: '\n' +
' websect\n' +
'\n' +
'首先下载websect\n' +
'\n' +
'\n' +
'npm I websect\n' +
'\n' +
'\n' +
'还是老规矩,爬取小米官网的数据QAQ,不过这一个不一样,要爬取的是这个:\n' +
'\n' +
'\n' +
'\n' +
'现在使用 websect 进行数据的爬取:\n' +
'\n' +
'const $ = require("websect")\n' +
'\n' +
'$.get(&... ',
date: '2019-11-24 23:40:03',
read_num: '20'
},
// ******************** 中间省略了很多数据 ********************
{
href: 'https://blog.csdn.net/qq_41672008/article/details/102464327',
type: '原创',
title: '\n 原创 css绝对定位的参照物 ',
content: '\n' +
' css绝对定位的重新认知\n' +
'\n' +
'所谓的css绝对定位,就是 position:absolute;\n' +
'这里记录一个我的错误认知,就是 绝对定位的参照物是 内容,还是 内容+内边距,我一直以为 参照物就是内容,但是实际上参照物是 内容+内边距\n' +
'看看下面的事例\n' +
'\n' +
'<!DOCTYPE html&a... ',
date: '2019-10-09 16:43:58',
read_num: '170'
}
]
75 // 这是爬取数据和打印数据总共用时 75ms
- 不打印数据的情况下:
sataniyadeMBP:ajax sataniya$ node op
66
sataniyadeMBP:ajax sataniya$ node op
66
sataniyadeMBP:ajax sataniya$ node op
66
sataniyadeMBP:ajax sataniya$ node op
77
sataniyadeMBP:ajax sataniya$ node op
68
sataniyadeMBP:ajax sataniya$ node op
67
sataniyadeMBP:ajax sataniya$ node op
66
sataniyadeMBP:ajax sataniya$ node op
68 // 可以看见 websect 爬取数据用时为 66ms
sataniyadeMBP:ajax sataniya$
- 爬取相同的数据,websect用时10ms,而 cheerio用时66ms,KO!!!
- 欢迎大家多多使用 websect并提出宝贵意见!