美文网首页让前端飞Web前端之路
node.js爬虫入门(一)爬取静态页面

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

作者: 叫我汪汪 | 来源:发表于2020-04-14 11:23 被阅读0次

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

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

    npm install request
    npm install cheerio
    

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

    (一)dom爬取

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

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


    2. 按照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)
        }
    })
    
    运行结果

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

    相关文章

      网友评论

        本文标题:node.js爬虫入门(一)爬取静态页面

        本文链接:https://www.haomeiwen.com/subject/btmgmhtx.html