学习通自动复读大佬的回答

这个学期,我们有门课的老师一上课就在学习通里面发布几十个讨论,最后大家基本都是看着前几个回答的一通复制粘贴,故想做一个自动复读的油猴插件

首先,看一下大概的工作流程:在*://*.chaoxing.com/bbscircle/grouptopic?*页面上获取到最新的二十个讨论题链接,依次点击进入,来到*://*.chaoxing.com/bbscircle/gettopicdetail?*页面上,找到指定大佬,正则匹配一下找到大佬的回答,将回答打包进ajax提交

 

说一下碰到的几个对js萌新(我)来说棘手的问题

第一个问题:正则的时候,js有两种正则初始化方式,如何使用

re = new RegExp("ab", 'g');
re = /ab/g;

这两句简单的正则是等价的,再复杂一点呢?

var re2 = new RegExp("(?<=<h3)([\\s\\S]+?)(?=</h3>)", 'm');
var re2 = /(?<=<h3)([\s\S]+?)(?=<\/h3>)/m;

可以看到,对转义的定义是不一样的,需要注意

那么再加入变量呢?

var re = new RegExp(setting.dalao_name + "([\\s\\S]+?)</h3>", 'm');

可以看到,第二种方法就无法将变量加入,只能使用函数方法

 

 

第二个碰到的问题:正则匹配的时候对html字符进行匹配,但是没有出来任何结果

这个是比较简单的问题,原因是我在提取div内容的时候用的是innerTEXT函数,这样返回结果不包含html字符,应使用innerHTML

 

第三个问题:在网页跳转的时候,程序会被自动重启,变量将全部初始化,如何计数让网页跳转40次后停下

这里我用到了油猴提供的GM_setvalue与GM_getvalue函数,它会将变量写入一个不会随油猴脚本重启而清空的表中,函数调用方法是:

GM_setValue("done_times", ++done_times);
done_times = GM_getValue("done_times");

同时在文件顶部加上

// @grant        GM_setValue
// @grant        GM_getValue

这样就可以将done_times这个变量在跳转网页的时候自加并记录

 

然后贴一下项目的Greasy Fork地址

灰常感谢几位测试员帮我定位了bug,提出了脚本的改进方向!

点赞
  1. 孙烨说道:
    QQbrowser Windows 10

    Fatal error: Uncaught ArgumentCountError: Too few arguments to function Walker_Comment::filter_comment_text(), 1 passed in /www/wwwroot/duya112233/wp-includes/class-wp-hook.php on line 287 and exactly 2 expected in /www/wwwroot/duya112233/wp-includes/class-walker-comment.php:267 Stack trace: #0 /www/wwwroot/duya112233/wp-includes/class-wp-hook.php(287): Walker_Comment->filter_comment_text('<p>\xE5\xA4\xA7\xE4\xBD\xAC\xE5\x95\x8A\xEF\xBC\x8C...') #1 /www/wwwroot/duya112233/wp-includes/plugin.php(206): WP_Hook->apply_filters('<p>\xE5\xA4\xA7\xE4\xBD\xAC\xE5\x95\x8A\xEF\xBC\x8C...', Array) #2 /www/wwwroot/duya112233/wp-content/themes/kratos-pjax-master/inc/ua.php(432): apply_filters('comment_text', '\xE5\xA4\xA7\xE4\xBD\xAC\xE5\x95\x8A\xEF\xBC\x8C\xE4\xBD\xA0...') #3 /www/wwwroot/duya112233/wp-content/themes/kratos-pjax-master/inc/ua.php(436): user_agent_display_comment() #4 /www/wwwroot/duya112233/wp-includes/class-wp-hook.php(289): user_agent('\xE5\xA4\xA7\xE4\xBD\xAC\xE5\x95\x8A\xEF\xBC\x8C\xE4\xBD\xA0...') #5 /www/wwwroo in /www/wwwroot/duya112233/wp-includes/class-walker-comment.php on line 267