axios 使用及其相应简单爬虫的扩展

axios 是用于访问http/https请求的一个js库。可用于前端和node后端向服务器发送请求的一个库。

npm地址如下: https://www.npmjs.com/package/axios

简单的promise风格代码包装如下:


const axios = require('axios');

const fs = require('fs');

/**
 * @version 1.0 用于访问其他网站的http与https模块
 * 
 */
class AxiosMannage {

    /***
     * @version 1.0 get promise请求包装
     * 
     */
    static async get({ url, data }) {

        return await new Promise(
            (resolve, reject) => {

                axios.get(url, { params: data }).then((response) => {

                    resolve(response);

                }).catch((err) => {

                    reject(err);

                });

            }
        );

    }

    /***
     * @version 1.0 post promise请求包装
     * 
     */
    static async post({ url, data }) {

        return await new Promise(
            (resolve, reject) => {

                axios.post(url, data).then((response) => {

                    resolve(response);

                }).catch((err) => {

                    reject(err);

                });

            }
        );
    }


    /***
     * @version 1.0 下载网络资源
     * 
     * @param type get/post 
     * 
     * @param url 文件资源地址
     * 
     * @param path 保存地址
     * 
     * 
     */
    static download({ type = 'get', url, path }) {

        axios({

            method: type,
            url,
            responseType: 'stream'

        }).then((response) => {

            response.data.pipe(fs.createWriteStream(path));

        });


    }

}

module.exports = { AxiosMannage };

上述代码比较简单,如果涉及到对于token认证,config配置等,可以参考官网进行补充。

拓展:爬虫(数据挖掘的运用)

1.如果想爬取其他网站的内容,可以使用axios进行访问并进行爬取.

2.数据挖掘的简单环节如下:爬取主页链接->分析提取目标链接地址->访问目标链接地址,获取数据存储->后续分析持久化等

3.以爬取百度关于axios链接搜索资源地址为例,代码如下:

let root = "http://www.baidu.com/s?word=axios";

const cheerio = require('cheerio');

AxiosMannage.get({ url: root }).then(

    (html) => {

        let content = html.data;//拿取了列表的链接

        //运用cheerio 拿去所有有用的连接
        //注cheerio 是专门用来解析html文本结构的一个工具

        //https://www.npmjs.com/package/cheerio   cheerio使用地址

        //在这里可以去获取目标页地址
        let $ = cheerio.load(content);

        let listsUrl = $("#content_left").find(".result");

        for (let i = 0; i < listsUrl.length; i++) {

            //获取目标页的链接地址
            let links = $(listsUrl[i]).find("a").attr("href");

            console.log("连接地址: " + links);

        }

    }

);

爬取结果如下:
这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值