记录一次修复知网学位论文目录下载油猴脚本的过程

本文记录了修复一个用于下载知网学位论文目录的油猴脚本过程。问题源于知网更新了分章下载页面地址,导致脚本失效。修复包括更新请求URL和调整jQuery选择器以解析新页面结构。修复后的脚本能够正常工作,解析目录信息时使用innerText和getAttribute方法。
摘要由CSDN通过智能技术生成

最近使用油猴脚本下载知网学位论文时发现脚本不能正常的下载目录了,因此手动修复一下这个脚本。
通过查看脚本源码和网上搜索发现,脚本使用了jQuery以及油猴的部分接口(比如:GM_xmlhttpRequest,GM_setClipboard等)
在分析源码和查阅脚本的说明后,发现脚本是通过获取知网【分章下载】的网页源码得到每个目录信息的,借助 console.log() 打印GM_xmlhttpRequest请求url发现,知网对分章下载的页面地址进行了更改,脚本原来的请求格式是:
https://chn.oversea.cnki.net/kcms/download.aspx?dbcode=CMFD&dbname=CMFD202102&filename=论文ID.nh
现在改版后的请求格式为:
https://chn.oversea.cnki.net/kcms/detail/downdetail.aspx?dbcode=CMFD&dbname=CMFD202102&filename=论文ID.nh
如果使用原来的请求格式会被知网拒绝放访问,提示错误
image
于是第一步是修改目录请求url的生成语句,将第81行的语句修改成为

content_url = 'https://chn.oversea.cnki.net/kcms/detail/downdetail.aspx' + content_url.match(/\?.*/)[0];

即可,下图为修改前后对比。
修改前:
image
修改后:
image
完成目录页面请求链接修复后,我发现目录下载功能仍然能正常使用,通过查看源码中目录文字生成程序段发现,脚本使用了jQuery完成网页信息的解析。显然,目前页面获取后仍然没能解析出目录信息的原因大概率是知网对页面结构进行了改版,原先的解析方法无法完成新版网页的内容解析,因此,我通过查阅W3school jQuery 选择器的相关介绍,重新修改了目录内容的解析程序,关键参考程序段如下:

function manage_contents(xhr) {
   
    // 这段程序主要修改了下面2行
    var cnt_list = $('ul.list-main', xhr.responseText)[0]; // 目录列表
    cnt_list = $('li', cnt_list);
    var contents = get_content(cnt_list); // 目录内容
    // 添加目录复制
        $('.btn-dlpdf').first().after($('<li class="btn-dlpdf"><a href="javascript:void(0);">目录复制</a></li>').click(function() {
   
        GM_setClipboard(contents); // 运用油猴脚本自带的复制函数
        window.alert('目录已复制到剪贴板');
    }));
    // 添加目录下载
    $('.btn-dlpdf').first().after($('<li class="btn-dlcaj"><a>目录下载</a></li>').click(function() {
   
        var data = new Blob([contents],{
   type:"text/plain; charset=UTF-8"});
        $(this).find('a').attr("download", '目录_' + $('.wx-tit h1:first-child()').text().trim() + '.txt');
        $(this).find('a').attr("href", window.URL.createObjectURL(data));
        window.URL.revokeObjectURL(data);
        window.alert("目录索引已保存, 请使用PdgCntEditor软件将目录整合到PDF中");
    }));
}

另一个修改的地方如下:

function get_content(cnt_list){
   
    var contents = "";
    for (var i = 0; i < cnt_list.length; i++) {
    
        var cnt_level = cnt_list[i].getAttribute("class").split("-")[1];
        var cnt_levelText="";
        for (var j = 0; j< cnt_level; j++){
   
            cnt_levelText = cnt_levelText+"\t";
        }
        var cnt_item = cnt_list[i].chi
企业网站管理系统|启点在线企业网站源码是针对外贸中小企业而开发的具有简单易用,功能强大,性价比高,扩展性好,安全性高,稳定性好的单语版系统,可以加快企业网站的开发的速度和减少开发的成本.让不同的用户在懂的少许html语言的基础上,就能够快速的构建一个风格个性化而功能强大的企业网站. A 屏  宽:DIV+CSS自适应 B 特点说明:适用于个人,各行业企业建站 C 支持浏览:IE10+,360,Google等主流浏览器 D W A P:自动识别移动端 E 功  能:易懂易操作自定义标签满足众多需求,多模型,会员权限体系,更多请浏览启点在线官方网站 系统功能: 1.支持电脑端+手机端,支持无缝切换。 2.支持站内模糊搜索。 3.支持会员系统,找回密码,会员头像等。 4.支持内容会员权限功能。 5.集成三套qq客服,支持多个qq,多个电话,多个联系人。 6.支持全站自动静态,支持伪静态+静态缓存。 7.支持数据库备份、恢复功能。 8.支持session、cookie模式切换,香港空间不怕狂掉线了。 9.支持批量上传图片,自定义参数,自动关键词,描述,tag标签等。 10.支持上传文件管理,支持冗余检测。 11.支持模板切换、管理,在线模板。 12.支持留言、管理员回复。 13.支持aspjpeg水印,支持png透明水印。 14.支持jmail邮件提醒,支持配置设定。 15.支持验证码开关。 16.支持批量添加栏目,支持无线级栏目。 17.支持栏目模型管理。 18.支持栏目模型自定义参数管理。 19.支持幻灯管理,幻灯数量和分组不限。 20.支持友情链接管理。 21.支持广告管理。 22.支持Tag标签。 23.支持自定义内容。 24.支持首页翻页。 25.支持百度地图标注,自动生成。 26.支持网站logo,手机logo,微信图片的上传。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值