ShareXài ké emoji của thým ken với Nodejs ???

4 bài đăng
25.03.2021 / 19:39
Poker
Bài đăng: 48
Member

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 :D .

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

JAVASCRIPT
  1. const got = require("got");
  2. const cheerio = require("cheerio");
  3. const fs = require("fs");
  4.  
  5. var url = "https://forum.vdevs.net/misc/help?act=smileys&cat=meme&page=";
  6.  
  7. function getAll(id,html){
  8. if(id >= 1){
  9. got(url+id).then(res => cheerio.load(res.body))
  10. .then($ => {
  11. console.log("Loading ..."+Math.round(100/id)+" %");
  12. var str = $(".list-group").html();
  13. return getAll(id - 1,html+=str);
  14. })
  15. .catch(err => {
  16. console.log("Error : "+err);
  17. });
  18. } else {
  19. var parse = cheerio.load(html);
  20. var arr = [];
  21. parse(".list-group-item").each((k,v) => {
  22. const img = parse(v).find("img");
  23. var link = img.attr("src");
  24. var text = img.attr("alt");
  25. arr.push({text,link});
  26. })
  27. fs.writeFile("output.txt",JSON.stringify(arr).toString(),err => {
  28. if(err){
  29. return console.log("Thất Bại !!")
  30. }
  31. console.log("Thành Công")
  32. });
  33. }
  34. }
  35. getAll(5,"");
28.03.2021 / 09:02
hoangchan
Bài đăng: 102
Member
HÔNG

chấm để dành

29.03.2021 / 22:46
Treasure
Bài đăng: 66
Member
Tứ Phương Thất Bại

Curl cũng được mà nhỉ ;d

30.03.2021 / 21:12
Poker
Bài đăng: 48
Member
Treasure đã viết

Curl cũng được mà nhỉ ;d

cái gì chả đc. quan trọng là mình thích JavaScript nên viết bằng Nodejs thôi. với lại Nodejs có lib cover string to dom khá xịn xò