Không phải ai cũng có khả năng lập trình để xây dựng một công cụ crawl dữ liệu chuyên nghiệp. May mắn thay, với n8n, bạn hoàn toàn có thể crawl dữ liệu từ website một cách trực quan, không cần viết code phức tạp. Trong bài viết này, Tino sẽ hướng dẫn bạn từng bước cách crawl dữ liệu website với n8n đơn giản, nhanh chóng.
Web crawling là gì?
Web crawling là quá trình tự động truy cập vào các trang web, thu thập và trích xuất dữ liệu từ nội dung hiển thị trên website đó. Công cụ hoặc chương trình thực hiện việc này được gọi là crawler hoặc web spider.
Crawler hoạt động bằng cách gửi yêu cầu đến một URL, đọc nội dung HTML trả về, sau đó phân tích và lấy ra các thông tin cần thiết như tiêu đề bài viết, giá sản phẩm, hình ảnh, liên kết,… Sau khi thu thập xong, dữ liệu có thể được lưu trữ hoặc xử lý tùy vào mục đích sử dụng.

Các ứng dụng phổ biến của việc crawl dữ liệu
Việc crawl dữ liệu website có thể ứng dụng trong nhiều lĩnh vực và mục tiêu khác nhau:
- Theo dõi giá sản phẩm: Thu thập giá từ các trang thương mại điện tử để so sánh, làm công cụ cảnh báo khi giá giảm.
- Tổng hợp tin tức: Lấy tiêu đề, nội dung bài viết từ các trang báo điện tử để cập nhật nhanh hoặc phân tích xu hướng.
- Thu thập dữ liệu tuyển dụng: Lấy danh sách việc làm từ các trang tuyển dụng, lọc theo ngành, địa điểm, mức lương.
- Phân tích đối thủ cạnh tranh: Theo dõi các thay đổi sản phẩm, dịch vụ, chiến lược content hoặc SEO của đối thủ.
- Nghiên cứu thị trường: Lấy dữ liệu đánh giá, bình luận sản phẩm từ nhiều nguồn để phục vụ phân tích người dùng.

Nhờ khả năng tự động hóa và mở rộng, web crawling giúp tiết kiệm rất nhiều thời gian, công sức và cung cấp lượng dữ liệu phong phú cho các hoạt động phân tích.
Vì sao nên dùng n8n để crawl thay vì code tay?
Thông thường, để crawl dữ liệu, bạn cần biết lập trình với các ngôn ngữ như Python, sử dụng thư viện như BeautifulSoup, Scrapy… Tuy nhiên, điều này lại là rào cản lớn với những ai không có nền tảng kỹ thuật.
n8n mang lại một giải pháp đơn giản hơn rất nhiều:
- Không cần code: Bạn chỉ cần kéo-thả các node có sẵn như HTTP Request.
- Giao diện trực quan: Thiết kế luồng công việc dễ nhìn, dễ hiểu, phù hợp cho cả người mới bắt đầu.
- Tự động hóa mở rộng: Sau khi crawl xong, bạn có thể kết nối dữ liệu với Google Sheets, gửi email, đẩy lên API khác hoặc lưu trữ ở bất kỳ đâu.
- Dễ bảo trì và chỉnh sửa: Nếu muốn thay đổi nguồn crawl, cấu trúc dữ liệu hay điểm lưu trữ, bạn chỉ cần điều chỉnh lại vài node trong workflow, không cần sửa code phức tạp.
Tóm lại, n8n là lựa chọn lý tưởng cho những ai muốn tự động hóa việc crawl dữ liệu website nhanh chóng, tiện lợi và không phụ thuộc vào kỹ năng lập trình.

Hướng dẫn cách crawl dữ liệu website với n8n
Trong bài viết này, Tino sẽ hướng dẫn bạn cách crawl dữ liệu website với một workflow trong n8n.
Bước 1: Thêm node Manually Trigger
Node này là điểm khởi đầu của workflow, cho phép bạn kích hoạt toàn bộ quá trình một cách thủ công.
Bước 2: Thêm node Google Sheet
Node Google Sheet được sử dụng để đọc danh sách các URL từ một bảng tính Google Sheet. Điều này giúp bạn dễ dàng quản lý các trang web cần crawl mà không cần chỉnh sửa workflow mỗi lần.
Trước tiên, bạn cần chuẩn bị một bảng Google Sheets gồm một cột đặt tên là Websites chứa URL các website cần Crawl. Ví dụ:

Sau đó, quay lại n8n và cấu hình như sau:
- Credential to connect with Google Sheets account: Bạn cần thiết lập một tài khoản Google Sheets để n8n có thể truy cập vào bảng tính của bạn. Tham khảo bài viết: Cách xác thực Credential cho Google trên n8n
- Resource: Chọn Sheet Within Document.
- Operation: Chọn Get Row(s) để lấy tất cả các hàng từ bảng tính.
- Document: Chọn By URL và nhập URL của Google Sheet của bạn vào trường https://docs.google.com/spreadsheets/….
- Sheet: Chọn tên trang tính mà bạn muốn đọc dữ liệu, ví dụ: Trang tính1.

Bước 3: Thêm node HTTP Request Node (Dumpling AI Crawl Endpoint)
Node HTTP Request là trái tim của phần crawl dữ liệu, nơi bạn sẽ gửi yêu cầu đến API của Dumpling AI để trích xuất nội dung từ các URL. Dumpling AI là một dịch vụ cung cấp API crawl website mạnh mẽ, giúp bạn dễ dàng lấy nội dung sạch từ các trang web.
Trước tiên, bạn hãy truy cập vào https://app.dumplingai.com/api-keys để lấy API Key.


Sau đó, quay lại n8n và cấu hình node HTTP Request:
- Method: Chọn POST.
- URL: Nhập điểm cuối API của Dumpling AI: https://app.dumplingai.com/api/v1/crawl.
- Authentication: Chọn Generic Credential Type.
- Generic Auth Type: Chọn Header Auth.

- Header Auth: Bạn cần tạo một tài khoản Header Auth mới để lưu trữ API Key của Dumpling AI. Nhấp vào biểu tượng bút chì để cấu hình:
- Name: Nhập Authorization.
- Value: Nhập API Key của bạn từ Dumpling AI. API Key này thường có dạng sk_…. Đảm bảo rằng bạn thêm tiền tố Bearer trước API Key của mình, ví dụ: Bearer sk_YOUR_API_KEY.

- Send Body: Bật tùy chọn này.
- Body Content Type: Chọn JSON.
- Specify Body: Chọn Using JSON.
- JSON: Nhập cấu trúc JSON sau để gửi các tham số crawl đến Dumpling AI. Đảm bảo rằng bạn sử dụng biểu thức n8n để lấy URL từ dữ liệu đầu vào (từ Google Sheet node):
- url: {{ $json.websites }} sẽ lấy giá trị URL từ trường websites trong dữ liệu JSON đầu vào. Đảm bảo rằng cột chứa URL trong Google Sheet của bạn có tên là websites.
- limit: Số lượng bài viết tối đa được trả về.
- depth: Độ sâu crawl (ví dụ: 2 có nghĩa là crawl trang hiện tại và các liên kết sâu hơn một cấp).
- format: Định dạng nội dung trả về, ở đây là text.

Bước 4: Thêm node Split Out
Node Split Out được sử dụng để tách các kết quả trả về từ Dumpling AI thành các mục riêng lẻ, giúp xử lý từng bài viết một cách độc lập.
Cấu hình chi tiết:
- Fields To Split Out: Nhập results. Điều này giả định rằng phản hồi từ Dumpling AI chứa một mảng các kết quả trong trường results.
- Include: Chọn No Other Fields để chỉ giữ lại các trường đã tách.

Bước 5: Thêm node Edit Field (Set)
Node Edit Field (Set) được sử dụng để ánh xạ và chuẩn bị dữ liệu từ mỗi bài viết đã crawl, đảm bảo rằng các trường cần thiết có sẵn cho các bước tiếp theo của workflow.
Cấu hình chi tiết:
- Mode: Chọn Manual Mapping.
- Fields to Set: Thêm các trường sau và ánh xạ chúng từ dữ liệu JSON đầu vào:
- metadata.title: Kiểu String, giá trị {{ $json.metadata.title }}. Đây là tiêu đề của bài viết.
- content: Kiểu String, giá trị {{ $json.content }}. Đây là nội dung chính của bài viết.
- metadata.original_url: Kiểu String, giá trị {{ $json.metadata.original_url }}. Đây là URL gốc của bài viết.

Bước 6: Thêm node Code
Node Code được sử dụng để xử lý và định dạng dữ liệu từ các bài viết đã crawl thành một chuỗi HTML phù hợp cho bản tin. Nó cũng tổng hợp thông tin để tạo ra một lời nhắc (prompt) cho AI Agent.
Cấu hình chi tiết:
- Mode: Chọn Run Once for All Items.
- Language: Chọn JavaScript.
- JavaScript Code: Nhập đoạn mã JavaScript sau:
let output = '';
items.forEach((item, index) => {
const title = item.json.metadata?.title || 'No title';
const url = item.json.metadata?.original_url || 'No URL';
const content = item.json.content || 'No content';
output += `${index + 1}. ${title}\n${url}\n${content}\n\n`;
});
return [{ json: { aggregatedArticles: output } }];

Bước 7: Thêm node AI Agent Node
Node AI Agent là nơi bạn sẽ định nghĩa vai trò và hướng dẫn cho mô hình AI để tạo ra bản tin. Nó hoạt động như một công cụ trung gian để tương tác với các mô hình ngôn ngữ lớn như Google Gemini.
Cấu hình chi tiết:
- Source for Prompt (User Message): Chọn Define below.
- Prompt (User Message): Nhập ngữ cảnh cho AI như sau. Ngữ cảnh này hướng dẫn AI Agent đóng vai trò là trợ lý bản tin và tạo ra một tiêu đề hấp dẫn cùng bản tóm tắt các bài viết ở định dạng HTML có cấu trúc tốt. Bạn có thể copy từ workflow được cung cấp ở cuối bài viết.

- Chọn mô hình Google Gemini Chat Model và cấu hình cho mô hình này. Tham khảo bài viết: Hướng dẫn cách lấy API Key của Google Gemini

Lưu ý: Bạn có thể thay node AI Agent này thành node Open AI – Message a Model.
Bước 8: Thêm node Set
Trong phần “Values to Set”, tạo 2 trường:
- subject:
{{ JSON.parse($json.output.replaceAll('```json', '').replaceAll('```', '').trim()).subject }}
- body:
{{ JSON.parse($json.output.replaceAll('```json', '').replaceAll('```', '').trim()).body }}

Bước 9: Thêm node Gmail
Node Gmail là bước cuối cùng trong workflow, nơi bản tin được tạo bởi AI sẽ được gửi đến địa chỉ email của người nhận.
Cấu hình chi tiết:
- Credential to connect with: Thiết lập thông tin đăng nhập cho tài khoản Gmail của bạn. Quá trình này sẽ yêu cầu bạn cấp quyền cho n8n để gửi email từ tài khoản của bạn.
- Resource: Chọn Message.
- Operation: Chọn Send.
- To: Nhập địa chỉ email của người nhận bản tin, ví dụ: huynhdongtungufm@gmail.com.
- Subject: Sử dụng biểu thức để lấy tiêu đề bản tin từ phản hồi của AI Agent: {{ $json.subject }}.
- Email Type: Chọn HTML.
- Message: Sử dụng biểu thức để lấy nội dung HTML của bản tin từ phản hồi của AI Agent: {{ $json.body }}.

Bước 10: Kiểm tra workflow.
Nhấn nút Test Workflow và kiểm tra kết quả trả về trong email.

Kết quả:

Kết luận
Việc crawl dữ liệu website bằng n8n không chỉ đơn giản mà còn cực kỳ linh hoạt, phù hợp với cả người không biết lập trình. Bằng cách tận dụng khả năng kết nối mạnh mẽ giữa các node, bạn có thể tạo ra những quy trình thu thập dữ liệu tự động, tiết kiệm thời gian và tối ưu hiệu quả công việc.
Những câu hỏi thường gặp
Vai trò của Dumpling AI trong workflow crawl dữ liệu là gì?
Dumpling AI đóng vai trò quan trọng trong việc trích xuất nội dung sạch và có cấu trúc từ các trang web. Thay vì phải tự xây dựng các bộ phân tích cú pháp HTML phức tạp, bạn có thể sử dụng API của Dumpling AI để lấy phần nội dung chính, có thể đọc được của một trang web, loại bỏ các yếu tố không cần thiết như quảng cáo, menu, footer.
API Key Dumpling AI lấy ở đâu?
Bạn cần đăng nhập vào tài khoản trên Dumpling AI, sau đó vào mục API để tạo và sao chép API Key. Sau đó, lưu API Key vào n8n dưới dạng Header Auth Credential.
Dumpling AI có giới hạn gì không?
Có, tùy theo gói sử dụng của bạn. Gói miễn phí giới hạn số lượng crawl/tháng và độ sâu phân tích. Gói trả phí hỗ trợ tốc độ nhanh hơn và crawl nội dung nâng cao hơn.
Khi mới tạo tài khoản, bạn sẽ có 250 credit miễn phí từ Dumpling AI để crawl.
Dumpling AI có giới hạn theo domain không?
Không. Bạn có thể gửi bất kỳ URL nào, miễn là không bị chặn bot. Tuy nhiên, nếu website chặn crawler hoặc yêu cầu cookie, thì Dumpling AI cũng có thể trả về lỗi hoặc nội dung rỗng.
Tại sao nên xử lý kết quả crawl bằng AI (GPT)?
Sau khi lấy dữ liệu từ Dumpling AI, bạn có thể nối thêm node AI Agent để:
- Tóm tắt nội dung
- Viết lại theo giọng văn riêng
- Trích xuất thông tin (ví dụ giá, ngày, tiêu đề)
- Giúp tạo newsletter, post blog, hoặc tự động hóa đăng nội dung nhanh chóng.