大学单词表一键获取
更新
目前我已经完成了最终版本。现将代码贴在下方:
在https://www.koolearn.com/dict/*.html
中任一页面执行,即可获取当前书中单词表,默认顺序为逆序。
自动生成txt格式文件,方便导入。
/*
*Title: 新东方单词表导出
*Description: F12(https://www.koolearn.com/dict/*.html)
*Author: Tominysun
*Created: 2022/10/14
*Updated: 2023/04/01
*/
var words = "";
for (var i = 1; i <= $('.i-page a').length - 1; i++) {
if (i === $('.i-page a').length - 1) {//最后一次生成txt并退出循环
exportTxt($('.content-title').text() + ".txt", words);
break;
}
var url = window.location.protocol + '//' + window.location.host + $('.i-page a:eq(' + i + ')').attr("href");
$.ajax({
type: "get",
url: url,
async: false, //同步访问
success: function(data) {
$(data).find('div.word-wrap a.word').each(function() {
words = $(this).text() + "\n" + words
});
}
});
/*$.get(url,function(data,staytus){//默认异步访问,导致for循环以及单词顺序出现问题。
//$(data).find('div.word-wrap a.word').each(function(){console.log($(this).text()););
$(data).find('div.word-wrap a.word').each(function(){words = $(this).text()+"\n" + words});
});*/
}
function exportTxt(fileName, data) {
data = data.replace(/\n/g, "\r\n");
if (navigator.userAgent.indexOf("Trident") >= 0) {
try {
// IE 10 或以上
var fileObj = new Blob([data]);
navigator.msSaveBlob(fileObj, fileName);
} catch (ex) {
// IE 9 或以下
var winSave = window.open();
winSave.document.open("text", "utf-8");
winSave.document.write(data);
winSave.document.execCommand("SaveAs", true, fileName);
winSave.close();
}
} else {
// Webkit
var urlObject = window.URL || window.webkitURL || window;
var export_blob = new Blob([data]);
var save_link = document.createElement("a");
save_link.href = urlObject.createObjectURL(export_blob);
save_link.download = fileName;
save_link.click();
}
}
前言
我先前一直使用不背单词作为英语辅助学习的App. 但里面并没有配套的一些大学英语课本的词汇表. 不幸中的万幸是它提供了导入自定义词书的功能, 因此只要我能够获得txt, 就可以学习自定义词书了.
仅以此文简单记录我的获取方式.
曲折
找了许多的网站, 不是资源失效, 就是版本不符, 要不就是各大文库付费下载.
就算能获得的最终版本很可能也是doc或者pdf, 将其处理成需要的txt格式比较困难.
但我最终找到了非常完美的提供方->新东方...
代码
新东方提供了网页版本的分页词汇表. 由于格式非常简单, 我简单通过js处理下即可得到需要的txt格式.
var a = "";
$('div.word-wrap a.word').each(function(){a = $(this).text()+"\n" + a});
console.log(a);
资源
后记
目前的代码非常简单, 只是简单将网页元素批量提取 + 排列, 还需要手动拼接, 由于新东方提供的词汇表是分页的, 计划后续改进成自动访问分页并最终生成完整词汇表导出.