签到天数: 193 天
[LV.7]常住居民III
712
5960
6759
管理员
非物质文化遗产社会摇传承人
之前知道我们点击章节会远程加载一下内容所以这节课目的主要是分析一下网络请求封装出一个函数抓包可以知道调用了一个getRess提交参数也非常简单是一个章节id那么我们的目标很简单了就是将之前得到的数组全部转化为章节id并实现请求,拿到相应数据我们再查看一下返回数据可以看到就是简单的章节内数据那我们开始写吧先从dom中读取到章节数据这里看到有两种元素,li的是主章节的,a是子章节的我们先看主章节,在data-id属性上而子章节的却在data-secid上那么我们可以直接写一个暴力判断通过读data-id属性,如果读不到直接写一个data-secid属性因为我们是遍历数组,所以可以直接写一个map属性,然后根据其返回值进行赋值
ChapterList= ChapterList.map((item)=>item.getAttribute("data-id")??item.getAttribute("data-secid"))
可以直接由dom数组转化成id的数组集合然后我们封装GM_Xhr制作一个简单的promise的post封装
function GetRessList(id){ return new Promise((resolve,reject)=>{ GM_xmlhttpRequest({ url:"https://service.icourses.cn/hep-company//sword/company/getRess", method :"POST", data:"sectionId="+id, headers: { "Content-type": "application/x-www-form-urlencoded; charset=UTF-8" }, onload:function(xhr){ try { resolve(JSON.parse(xhr.responseText).model.listRes) } catch(err) { resolve([]) } } }); }) }
这里用了promise封装,然后直接json解析找到listRes,如果中间出现任何错误则返回一个空数组然后简单测试一下可以发现拿到了数组~那么这节课我们就搞定了下节课我们开始尝试操控网页的数据来实现自动刷课!
使用道具 举报
本版积分规则 发表回复
通过论坛认证的开发者
2023年中秋纪念章
油中两岁啦~
这个荣誉的勋章是为那些为脚本猫/油猴中文网生态做出贡献的会员而设。无论是编写代码、完善文档,还是发表教程,他们都是我们生态的重要建设者。 您的每一行代码,每一段文档,都是我们社区生态的重要一砖一瓦。您的贡献,不仅促进了技术的发展,也为其他成员提供了学习和成长的平台。您是我们社区的灵魂,是我们前进的动力。感谢您的努力和付出,让我们共同创造一个更美好的脚本猫和油猴中文网。