在一次比较久远的课程设计中,我和小组成员做了一个本校大学生二手市场交易平台网站,其中有一个功能是学生用户注册账号之后必须经过学生身份验证才能获取发布二手商品和交易等一系列权限,否则你注册的账号只能是属于“僵尸号”,只可观看别人发布的商品信息,其他基本上什么都干不了。那时候我想到的是通过模拟登录学生信息管理系统的方式来验证学生身份,即学生用户通过输入自己的学生账号和密码,然后服务端将这些信息进行学院学生信息管理系统的登录操作,通过验证之后(登录成功)再进行爬虫抓取对应的学生个人信息数据(姓名、学号、专业等),然后存进数据库,完成账号的身份验证操作。其实本质上这个操作就是爬虫,只不过爬取的是有登录权限的网页。下面我来介绍一下基本的操作,技术上当然是基于Node.js平台啦。
首先,需要用到的模块有:(安装模块就不用说了吧,直接npm install xxx --save)
- http模块:这个想必用过Node.js的都很熟悉吧,这里http模块很重要,主要是获取页面的数据信息(html。。。);
- cheerio模块:这个主要将http请求获得的数据进行对应抓取,语法上类似JQuery的DOM操作,后面放代码会有解释,很简单;
- iconv模块:这个是为了防止抓取到的页面信息乱码,其实乱码问题主要原因是学校那套网站太老旧了,不得不用iconv处理一下;
现在我来说一下实现过程:
- 首先,必