ata
发布于 2022-08-24 / 42 阅读
0
0

使用 axios 爬取校园网公文通的内容

环境:Node.js + npm,当然也能迁移到前端,Webpack 打包一下就好。

需要安装的库:

  • axios: 用来发送 GET 请求。

  • iconv-lite: 用来将 HTML 数据的 Buffer 转成 gb2312 编码。

前置条件:

先通过统一登录认证,跳转到内部网。查看 Cookies,找到一个叫 ASPSESSIONIDCCDSARBT 的字段,把值复制下来。(登录这个步骤应该也可以通过代码来实现,稍后再研究,有结果了会更新本文)

代码:

import axios from 'axios';
import iconv from 'iconv-lite';

const result = await axios.get('https://www1.szu.edu.cn/board/', {
    responseType: 'arraybuffer',
    headers: {
        Cookie: 'ASPSESSIONIDCCDSARBT=[COOKIE]'
    }
})

const html = iconv.decode(result.data, 'gb2312');

const data = html
    .match(/title="(.*?)" target="_blank" href="(.*?)"/g)
    .map(value => ({
            title: value.match(/title="(.*?)"/)[1],
            url: `https://www1.szu.edu.cn/board/${value.match(/href="(.*?)"/)[1]}`
        })
    );

其中 [COOKIE] 就是上一步中拿到的 cookie。

结果示例:

image


评论