node.js爬虫入门(一)爬取静态页面

2619 33 0 技术 2020-04-14

说到爬虫其实并没有想象中那么复杂,原理就是向目标URL发送请求然后把响应解析成我们想要的数据格式,如果涉及Token鉴权则比较复杂一点,本次只讲解最简单的入门静态爬虫。

node.js中实现爬虫推荐两个库,request和cheerio

npm install request
npm install cheerio

request用来发送请求;cheerio则是jquery核心功能的快速简洁灵活的实现,可以直接对request请求返回的页面html进行jquery式的dom操作。

(一)dom爬取

下面给一个最简单的爬虫例子,我们爬取简书我的主页的用户名

  1. 打开要爬取的页面并要找到用户名的dom节点

13653457-d4221adec40720b2

  1. 按照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())
    }
})

13653457-11f04676fe47de0f

(二)列表爬取

如果要爬取一个列表,例如我的简书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)
    }
})

13653457-253527c03d985474

静态爬虫到此结束了,后面还会讲解动态网页的爬取。

© 2020 peal.cc 粤ICP备2020133024号