Skip to content

Instantly share code, notes, and snippets.

@kenzouno1
Last active June 19, 2019 07:06
Show Gist options
  • Save kenzouno1/6033c493b9489327130363f660b309a2 to your computer and use it in GitHub Desktop.
Save kenzouno1/6033c493b9489327130363f660b309a2 to your computer and use it in GitHub Desktop.
#1 Lấy điểm thi THPT các trang web *.edu.vn

Hướng dẫn sử dụng

  • Coppy nội dung file lay-diem-thi.js
  • Vào trang web cần ấy điểm
  • Bấm f12 vào tab console paste đoạn js vào sau đó thay đổi giá trị biến sbd. với mỗi mảng con trong biến này tương ứng minmax của 1 khoảng số báo danh
  • Enter chờ quét xong sẽ tự lưu file dạng json.

Good Luck

!function(e){e.save=function(o,n){if(o){n||(n="console.json"),"object"==typeof o&&(o=JSON.stringify(o,void 0,4));var t=new Blob([o],{type:"text/json"}),a=document.createEvent("MouseEvents"),s=document.createElement("a");s.download=n,s.href=window.URL.createObjectURL(t),s.dataset.downloadurl=["text/json",s.download,s.href].join(":"),a.initMouseEvent("click",!0,!1,window,0,0,0,0,0,!1,!1,!1,!1,0,null),s.dispatchEvent(a)}else e.error("Console.save: No data")}}(console);
var sbd = [[230001,230020],[240001,240020]];
var idYear = $('#list-scoreTable12 .item-exam.active2 a').data('id');
var sitename = window.location.hostname;
var moduleId = $("#box-search-dataset input[name=moduleId]").val();
var submitFormId = $("#box-search-dataset input[name=submitFormId]").val();
var securityToken = $("#box-search-dataset input[name=securityToken]").val();
var siteId = $("input[name=site]").val();
var data = [];
const getData = async(id,max,save=false)=> {
var f = await fetch(
`http://${sitename}/?module=Content.Listing&moduleId=${moduleId}&cmd=redraw&site=${siteId}&securityToken=${securityToken}&url_mode=rewrite&submitFormId=${submitFormId}&moduleId=${moduleId}&page=&site=${siteId}`, {
credentials: "include",
headers: {
accept: "*/*",
"accept-language": "vi,en;q=0.9,vi-VN;q=0.8,en-US;q=0.7",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
pragma: "no-cache",
"x-requested-with": "XMLHttpRequest"
},
referrer: `http://${sitename}/tra-cuu/bang-diem`,
referrerPolicy: "no-referrer-when-downgrade",
body: `layout=Decl.DataSet.Detail.default&itemsPerPage=8&pageNo=1&service=Content.Decl.DataSet.Grouping.select&itemId=${idYear}&gridModuleParentId=11&type=Decl.DataSet&page=&modulePosition=0&moduleParentId=-1&orderBy=&unRegex=&keyword=` +
id +
"",
method: "POST",
mode: "cors"
}
);
var res = await f.text();
if (res.includes("Có 1 bản ghi.")) {
var html = $.parseHTML(res);
var obj = {};
$(html)
.find("tbody td")
.each(function(index, item) {
obj[getKey(index)] = $(this)
.text()
.replace(/\n/g, "")
.trim();
});
data.push(obj);
console.log("đã lấy " + data.length + " bản ghi");
}
if (id < max) {
getData(id + 1,max,save);
} else {
console.save(data.sort((a,b)=>{
if ( a.SBD < b.SBD ){
return -1;
}
if ( a.SBD > b.SBD ){
return 1;
}
return 0;
}), `${sitename.replace(".","-")}.json`);
};
}
function getKey(index) {
switch (index) {
case 0:
return "SBD";
case 1:
return "Họ và tên";
case 2:
return "Ngày sinh";
case 3:
return "Trường";
case 4:
return "Điểm môn Ngữ văn";
case 5:
return "Điểm môn Toán";
case 6:
return "Điểm môn Tổ Hợp";
case 7:
return "Tổng";
}
}
sbd.map((item,index)=>{
const save =index == (sbd.length-1);
getData(item[0],item[1],save);
});
@bphucc
Copy link

bphucc commented Jun 14, 2019

Giá trịn min, max thay đổi tuỳ thuộc vào gì ạ, khi xuất ra file json thì làm sao để chuyển thành excel ạ?

@kenzouno1
Copy link
Author

Giá trịn min, max thay đổi tuỳ thuộc vào gì ạ, khi xuất ra file json thì làm sao để chuyển thành excel ạ?

vì ko biết rõ có bao nhiêu số báo danh nên mình để min,max nếu ai biết được khoảng số báo danh của tỉnh. Khoảng cách giữa min và max càng nhỏ càng tốt

@nguyenphuc241 bạn có thể dùng thư viện https://github.com/SheetJS/js-xlsx để convert json sang excel nhé.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment