|
发表于 2020-3-16 11:08:58
|
显示全部楼层
不知道你要哪部分数据
下面代码是能拿到儿科护理学的网页源码,不过好像也都是做防护了
- const http=require("http");
- const querystr=require("querystring");
- //探索医学继续教育网学科部分(没有HREF,是用post请求参数方式)
- //构造参数
- var xueke="儿科护理学";
- var post_data=querystr.stringify({
- "search_input":"",
- "xueke":xueke,
- "brand":"",
- "mode":"",
- "pid":xueke,
- "sign":"",
- "level_h":"-1",
- "forma":"",
- "score_sort":"",
- "cost_sort":""
- });
- var contentLen = Buffer.byteLength(post_data, 'utf8');
- // 构建options
- var options={
- hostname:"www.ncme.org.cn",
- port:80,
- path:"/ProjectList.do",
- method:"POST",
- headers: {'Content-Type': 'application/x-www-form-urlencoded','Content-Length': contentLen}
- };
- req=http.request(options,
- res=>{
- var strs=[];
- res.on('data', buffer => {//请求到的数据都在这里了
- strs.push(buffer);
- });
-
- res.on('end', () => { //end 请求完成,对数据进行处理的过程
-
- let buff = Buffer.concat(strs); //对请求回来的数据进行Buffer封装,这里的结果是二进制
- let iconv = require('iconv-lite'); // 转码模块。。。nodejs安装模块npm install ...
- html=iconv.decode(buff,"utf8"); // 转码,把二进制转成我们能读懂的string
- console.log(html);
-
- });
- //这里好像还应该有个res.on("error"()=>{});
- });
- req.write(post_data);//发送内容
- req.end(); //结束请求,必须,否则会一直请求
复制代码 |
|