说到爬虫其实并没有想象中那么复杂,原理就是向目标URL发送请求然后把响应解析成我们想要的数据格式,如果涉及Token鉴权则比较复杂一点,本次只讲解最简单的入门静态爬虫。
node.js中实现爬虫推荐两个库,request和cheerio
npm install request
npm install cheerio
request用来发送请求;cheerio则是jquery核心功能的快速简洁灵活的实现,可以直接对request请求返回的页面html进行jquery式的dom操作。
(一)dom爬取
下面给一个最简单的爬虫例子,我们爬取简书我的主页的用户名
-
打开要爬取的页面并要找到用户名的dom节点
-
按照jquery的选择器写法获取,这里应该是
$('.main-top>.title>a').text()
附上代码
const request = require('request')
const cheerio = require('cheerio')
request('https://www.jianshu.com/u/5b23cf5114a1', (err, res) => {
if (err) {
console.log(err.code)
}
else {
let $ = cheerio.load(res.body)
console.log($('.main-top>.title>a').text())
}
})
运行结果
(二)列表爬取
如果要爬取一个列表,例如我的简书Blog列表,那该怎么实现呢,同理,使用jquery的each
方法,该方法会对选择器内的匹配dom进行遍历。按照同样的步骤先找到dom节点再进行解析。
附上参考代码
const request = require('request')
const cheerio = require('cheerio')
request('https://www.jianshu.com/u/5b23cf5114a1', (err, res) => {
if (err) {
console.log(err.code)
}
else {
let $ = cheerio.load(res.body)
let data = []
$('.note-list>li').each(function (i) {
data.push($(this).find('.title').text());
});
console.log(data)
}
})
运行结果
静态爬虫到此结束了,后面还会讲解动态网页的爬取。
网友评论