Tình hình là đang tập tành viết cái forum bé xíu. đến đoạn emoji thì ko biết kiếm đâu ra. thế thôi đành xài ké của forum này vậy .
tìm kiếm loanh quanh hồi thấy trang này thống kê hết meme và emoji của forum này. ngó qua thấy 5 page . 1 page là 11 emoji => tầm 50 emoji , copy thủ công chắc chớt thế là nhanh trí viết đoạn script nodejs get mấy cái icon emoji này.
mình mất 15p để viết . chắc copy tay còn nhanh hơn .
đùa tý chứ post này chủ yếu hướng dẫn mn kĩ thuật crawl 1 website. kĩ thuật này sẽ giúp ae bóc tách và lấy dữ liệu cần thiết của 1 website nào đó.vì demo là get emoji web này , dữ liệu là bé nên ae chưa thấy có ích lắm nhưng khi ae cần lấy data 1 trang nào đó lớn. ae mới thất hữu ích như nào.
tạo 1 file đuôi .js và copy code dưới. nhớ cài 2 lib của nodejs là là got(send request) và cheerio(cover string to dom) bằng cách
npm i got,cheerio
xong rồi vào terminal gõ node "tên file".js đợi nó run xong là ok. khi run xong nó sẽ tạo 1 file tên là output.txt chứa dữ liệu cần lấy.
có thắc mắc cứ comment
const got = require("got"); const cheerio = require("cheerio"); const fs = require("fs"); var url = "https://forum.vdevs.net/misc/help?act=smileys&cat=meme&page="; function getAll(id,html){ if(id >= 1){ got(url+id).then(res => cheerio.load(res.body)) .then($ => { console.log("Loading ..."+Math.round(100/id)+" %"); var str = $(".list-group").html(); return getAll(id - 1,html+=str); }) .catch(err => { console.log("Error : "+err); }); } else { var parse = cheerio.load(html); var arr = []; parse(".list-group-item").each((k,v) => { const img = parse(v).find("img"); var link = img.attr("src"); var text = img.attr("alt"); arr.push({text,link}); }) fs.writeFile("output.txt",JSON.stringify(arr).toString(),err => { if(err){ return console.log("Thất Bại !!") } console.log("Thành Công") }); } } getAll(5,"");