Chào mừng bạn trở lại với series "Cuộc Đua Code Chống Lại Thời Gian!" – nơi chúng ta biến những công việc nhàm chán thành những siêu phẩm tự động, tiết kiệm từng giây vàng ngọc. Hôm nay, tôi cực kỳ hào hứng chia sẻ một dự án mà tôi đã biến một công việc thủ công lặp đi lặp lại thành một cỗ máy tự động siêu phàm! Sẵn sàng để xem làm thế nào bạn có thể tiết kiệm thời gian và thêm chút "gia vị" thú vị vào quy trình làm việc của mình chưa? Bắt đầu thôi nào! Chuyện hậu trường: Làm việc ở một startup đúng là có nhiều điều thú vị, ví dụ như cơ hội được hợp tác với đủ phòng ban và "khai quật" những điểm chưa hiệu quả, chín muồi để tự động hóa. Trong một buổi trò chuyện gần đây với đội Marketing, tôi đã phát hiện ra một công việc mà phải nói là... "cầu xin" được nâng cấp bằng công nghệ! Họ đang hàng ngày làm những việc này một cách thủ công: Truy cập Product Hunt mỗi ngày để lấy 5 sản phẩm hot nhất. Thu thập thông tin mạng xã hội của từng "nhà sáng tạo" ra sản phẩm đó. Lặp đi lặp lại quy trình này... mỗi ngày! <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e6d5e6psjv9rqykvqu95.png' alt='Giao diện Product Hunt'> Ngay khi nghe xong, tôi nghĩ ngay: "Tại sao mình không tự động hóa nó nhỉ?" Thế là tôi túm ngay lấy laptop và bắt đầu "gõ code" thôi! Phân tích vấn đề (hay là "Mổ xẻ" cái khó): Để "xử lý" công việc này, tôi cần xây dựng một "công cụ cào dữ liệu" (hay còn gọi là scraper). Nghe thì có vẻ "hack não" nhưng thực ra không hề phức tạp đâu, cứ như bạn đang "thu gom" thông tin vậy đó! Đây là cách tôi đã tiếp cận nó: 1. "Thăm dò" cấu trúc Product Hunt: Đầu tiên, tôi phải tìm hiểu xem Product Hunt hiển thị nội dung như thế nào và họ sử dụng API gì. Hóa ra, trang này dùng phương pháp "server-side rendering" (SSR) – nghĩa là máy chủ đã chuẩn bị sẵn sàng dữ liệu và giao diện rồi, trình duyệt của chúng ta chỉ việc "hiển thị" thôi. Việc này quan trọng vì nó ảnh hưởng đến công cụ mình chọn. 2. Chọn "đồ nghề": Vì trang web dùng SSR, tôi quyết định dùng Puppeteer kết hợp với Node.js. Puppeteer giống như một "chàng đạo diễn" tài ba, cho phép chúng ta điều khiển một trình duyệt web "không đầu" (headless browser) – tức là trình duyệt chạy ngầm, không có giao diện đồ họa. Nó sẽ giúp chúng ta "cào" dữ liệu y hệt như khi bạn đang lướt web thủ công vậy đó, nhưng nhanh hơn gấp vạn lần! 3. "Hốt" dữ liệu về: 5 sản phẩm hot nhất: Tôi bắt đầu bằng việc dùng Puppeteer để "lướt" trang Product Hunt và lấy về danh sách 5 sản phẩm đứng top trong ngày. Thông tin chi tiết sản phẩm: Với mỗi sản phẩm, tôi lại "nhấp chuột" vào để lấy ID của nó. Cái ID này quan trọng lắm nha. Thông tin "nhà sáng tạo": Dùng cái ID sản phẩm vừa lấy được, tôi lại "đột nhập" vào một API của Product Hunt để "moi" thông tin chi tiết về người đã tạo ra sản phẩm đó. Thông tin mạng xã hội: Có được ID của "nhà sáng tạo" rồi, tôi lại tiếp tục dùng Puppeteer để "ghé thăm" trang cá nhân của từng người và "quét sạch" thông tin mạng xã hội của họ. 4. Lưu trữ dữ liệu: Cuối cùng, tất cả những thông tin "quý báu" này được tổng hợp gọn gàng vào một file CSV (giống như một bảng tính Excel đơn giản vậy), giúp đội Marketing dễ dàng "tiêu hóa" và sử dụng. Đây là ví dụ về file CSV sau khi được "gom" dữ liệu: <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ouevnpx2rdnrdf422xnr.png' alt='Dữ liệu sản phẩm và người tạo trong file CSV'> Tại sao việc này lại "đáng giá" thế? Việc tự động hóa những công việc này không chỉ giúp tiết kiệm hàng tấn thời gian mà còn giảm thiểu tối đa sai sót do con người gây ra. Đảm bảo đội Marketing luôn có dữ liệu mới nhất trong tầm tay, không cần phải lo lắng gì nữa! Hơn nữa, đây là một ví dụ tuyệt vời cho thấy công nghệ có thể biến những nhiệm vụ lặp đi lặp lại thành những thứ cực kỳ hiệu quả và mang lại giá trị cao. Ghi chú nhỏ: Nếu bạn muốn có "bí kíp" (source code) này, cứ thoải mái "ping" tôi nhé! Đến lượt bạn rồi! Bạn đã bao giờ tự động hóa một công việc nào đó bằng code chưa? Hãy chia sẻ những trải nghiệm và "mẹo" của bạn ở phần bình luận bên dưới nhé! Công việc nào mà bạn ước gì có thể tự động hóa được? Cùng thảo luận thôi nào! Cuối cùng, nếu bài viết này hữu ích, đừng ngần ngại vỗ tay 👏 và follow tôi nhé! Cảm ơn bạn rất nhiều!