鱼C论坛

 找回密码
 立即注册
查看: 3369|回复: 7

如何找到这个页面的链接

[复制链接]
发表于 2020-3-15 15:49:08 | 显示全部楼层 |阅读模式
6鱼币
最近想爬取这个网站http://www.ncme.org.cn/ProjectList.do下的课程目录,但是找不到相应链接:如图1.全在一个span的标签里,我也不懂js,不知道有没有大神指导一下

图1

图1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-16 08:56:25 | 显示全部楼层
const http=require("http");
//打印中国继续医学教育网所有学科名称
surl="http://www.ncme.org.cn/ProjectList.do";
req=http.request(surl,
    res=>{
            var strs=[];
            res.on('data', buffer => {//请求到的数据都在这里了
                strs.push(buffer);
            });
       
            res.on('end', () => {  //end 请求完成,对数据进行处理的过程
                var cheerio = require('cheerio');   //高仿jquery对dom进行解析的模块
                let buff = Buffer.concat(strs);     //对请求回来的数据进行Buffer封装,这里的结果是二进制
                let iconv = require('iconv-lite');  //  转码模块。。。nodejs安装模块npm install ...
                html=iconv.decode(buff,"utf8");     // 转码,把二进制转成我们能读懂的string
                $ = cheerio.load(html);     //导入文本,以便解析器能够解析
                paritem=$("li[class='so_many item_list']").find("span");   //以下是解析过程,不多说
                for(var x =0;x<paritem.length;x++){
                    bm_c=$(paritem).eq(x).text();
                    console.log(bm_c);
                }   
                
            });
            //这里好像还应该有个res.on("error"()=>{});
});
req.end();  //结束请求,必须,否则会一直请求

E:\wp>node app4
全部
全科医学
妇产科学
儿科学
精神卫生学
康复医学
医学教育与卫生管理
传染病学
骨外科学
泌尿外科学
外科学其他学科
耳鼻喉科
呼吸病学
烧伤外科学
重症医学
肿瘤外科学
麻醉学
超声诊断学
儿科护理学
心血管病学
眼科学
神经外科学
外科护理学
内分泌学
普通外科学
神经内科学
血液病学
急诊学
病理学
营养与食品卫生学
整形、器官移植外科学
口腔内科学
护理其他学科
内科学其他学科
内科护理学
公共卫生与预防医学其他学科
胃肠病学
药学其他学科
心胸外科学

E:\wp>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-16 09:07:22 From FishC Mobile | 显示全部楼层
没审题,你要找链接,我还以为是要这些文本
pass掉好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-16 09:30:49 | 显示全部楼层
这些学科是没有链接的,他都是通过post参数传到服务器的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-16 10:11:53 | 显示全部楼层
wp231957 发表于 2020-3-16 09:30
这些学科是没有链接的,他都是通过post参数传到服务器的

学校要上网课,但是这些网课有的长,有的短,有的要看视频,有的只需要浏览文档就行了。我就想把那些只需要浏览文档的网课找出来,不知道大神有没有办法帮忙写个爬虫,悬赏可以提高的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-16 11:08:58 | 显示全部楼层
py大神 发表于 2020-3-16 10:11
学校要上网课,但是这些网课有的长,有的短,有的要看视频,有的只需要浏览文档就行了。我就想把那些只需 ...

不知道你要哪部分数据
下面代码是能拿到儿科护理学的网页源码,不过好像也都是做防护了
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();  //结束请求,必须,否则会一直请求
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-16 12:02:12 | 显示全部楼层
这是post请求 获取不到链接的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-16 17:14:08 | 显示全部楼层
加我详聊Q:3338679865
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-3-14 21:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表