本文摘自PHP中文网,作者php中世界最好的语言,侵删。
这次给大家带来nodejs的爬虫框架superagent,nodejs爬虫框架superagent的注意事项有哪些,下面就是实战案例,一起来看一下。前言
早就听过爬虫,这几天开始学习nodejs,写了个爬虫https://github.com/leichangchun/node-crawlers/tree/master/superagent_cheerio_demo,爬取 博客园首页的文章标题、用户名、阅读数、推荐数和用户头像,现做个小总结。
使用到这几个点:
1、node的核心模块-- 文件系统
2、用于http请求的第三方模块 -- superagent
3、用于解析DOM的第三方模块 -- cheerio
几个模块详细的讲解及API请到各个链接查阅,demo中只有简单的用法。
准备工作
使用npm管理依赖,依赖信息会存放在package.json中
1 2 | cnpm install --save superagent cheerio
|
引入所需要用到的功能模块
1 2 3 4 | const request = require ( 'superagent' );
const cheerio = require ( 'cheerio' );
const fs = require ( 'fs' );
|
请求 + 解析页面
想要爬到博客园首页的内容,首先要请求首页地址,拿到返回的html,这里使用superagent进行http请求,基本的使用方法如下:
1 2 3 4 | request.get(url)
. end (error,res){
}
|
向指定的url发起get请求,请求错误时,会有error返回(没有错误时,error为null或undefined),res为返回的数据。
拿到html内容后,要拿到我们想要的数据,这个时候就需要用cheerio解析DOM了,cheerio要先load目标html,然后再进行解析,API和jquery的API非常类似,熟悉jquery上手非常快。直接看代码实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | let targetUrl = 'https://www.cnblogs.com/' ;
let content = '' ;
let imgs = [];
request.get(targetUrl)
. end ( (error,res) => {
if (error){
console.log(error)
return ;
}
let $ = cheerio.load(res.text);
$( '#post_list .post_item' ).each( (index,element) => {
let temp = {
'标题' : $(element).find( 'h3 a' ).text(),
'作者' : $(element).find( '.post_item_foot > a' ).text(),
'阅读数' : +$(element).find( '.article_view a' ).text().slice(3,-2),
'推荐数' : +$(element).find( '.diggnum' ).text()
}
content += JSON.stringify(temp) + '\n' ;
if ($(element).find( 'img.pfs' ).length > 0){
imgs.push($(element).find( 'img.pfs' ).attr( 'src' ));
}
});
mkdir ( './content' ,saveContent);
mkdir ( './imgs' ,downloadImg);
})
|
存储数据
上面解析DOM之后,已经拼接了所需要的信息内容,也拿到了图片的URL,现在就进行存储,把内容存放到指定目录的txt文件中,而且下载图片到指定目录
先创建目录,使用nodejs核心的文件系统
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function mkdir (_path,callback){
if (fs.existsSync(_path)){
console.log(`${_path}目录已存在`)
} else {
fs. mkdir (_path,(error)=>{
if (error){
return console.log(`创建${_path}目录失败`);
}
console.log(`创建${_path}目录成功`)
})
}
callback();
}
|
阅读剩余部分
相关阅读 >>
使用源码如何编译安装nodejs?
javascript怎么修改浏览器title
javascript alert函数显示中文乱码怎么办
javascript中var、let和const之间有什么区别?
html5中一些可以优化的细节介绍
javascript特权方法有什么用
js全称是什么?
javascript数组有哪些方法
javascript有什么优点
node.js安装和配置环境以及部署项目的方法介绍(windows系统下)
更多相关阅读请进入《superagent》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » nodejs的爬虫框架superagent