node.js爬取教务管理系统(发送请求)
— 前端学习进程
首先得查看需要获取页面的请求头,然后根据请求头去去读内容(以我们学校为例)
因为是要获取页面里面的内容,是得登入才能看到的,页面里面有许多文件,需要找到自己需要获取页面的那个请求。
找到所需要的请求之后,就去看请求头需要一些什么东西
var option={ hostname:'',//网页的总的地址 path:'',//所需要爬取网页连接在后面的 //也可直接写一个('Request url':'',) method:'GET', headers:{ 'Accept':'image/webp,image/apng,image/*,*/*;q=0.8', 'Accept-Encoding':'gzip, deflate', 'Cache-Control':'no-cache', 'Connection':'keep-alive', 'Accept-Charset': 'GB2312,utf-8;q=0.7,*;q=0.7', 'Cookie':'', 'Host':'', 'Referer':'', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36' } };
headers里面的内容就是Request Headers里面的
然后需要发送请求,需要用到http
var html=[]; var len = 0; var req=http.request(option,function(res){ res.on('data',function(data){ html.push(data);// data里面的数据就是网页的内容 len += data.length; }); res.on('end',function(){ var dataAll = Buffer.concat(html,len); var strJson = iconv.decode(dataAll,'gb2312'); //解决乱码问题 var the_course = filterCourse(strJson);//解析网页(函数) }) }); req.on('error',function(e){ console.log('Error:'+e.message) }); req.end();
总体来说,这个请求的逻辑很简单,就是发送一个请求,只是这个请求带有一个“通行证”(cookie),只要带有这个东西,才能看到其他人看不到的内容,即其他学校的人就不可以访问我们的教务系统,需要知道发送什么信息,就得看我登入的时候,发送了什么信息。
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试