Thu Thập Dữ Liệu Web cho Doanh Nghiệp Việt với n8n và Firecrawl

hecigo9 min read
n8nFirecrawlWeb ScrapingTự động hóaDoanh nghiệp Việt

Trang cần cào render bằng JavaScript, nên HTTP Request của n8n trả về khung HTML rỗng. Đổi sang một dịch vụ scraping thì lại vướng chuyện khác: node Firecrawl có sáu thao tác, tên nghe gần giống nhau, và chọn sai thì hoặc thiếu dữ liệu hoặc đốt credit vào việc mình không cần.

Bài này đi qua sáu thao tác đó theo thứ tự, kèm chỗ mỗi cái hỏng: cài node vào n8n, cấu hình credentials cho bản cloud và bản tự dựng, rồi scrape, crawl, map, search và hai thao tác quản lý job.

Firecrawl là gì?

Firecrawl là một công cụ web scraping thế hệ mới, được thiết kế để giải quyết các thách thức trong việc thu thập dữ liệu từ các trang web hiện đại. Nó có khả năng xử lý JavaScript, vượt qua các biện pháp chống bot và trích xuất dữ liệu có cấu trúc một cách dễ dàng. n8n Firecrawl node (n8n-nodes-firecrawl-v2) tích hợp tất cả 10 thao tác API Firecrawl v2 vào n8n, cho phép bạn làm việc với cả Firecrawl Cloud và các phiên bản tự lưu trữ.

Theo THE NEXOVA, node này đặc biệt hữu ích cho các kỹ sư tự động hóa và tích hợp, những người muốn xây dựng các workflow thu thập dữ liệu sản xuất trên n8n.

Cloud vs Self-Hosted

Firecrawl cung cấp hai tùy chọn triển khai: Cloud và Self-Hosted. Dưới đây là so sánh giữa hai tùy chọn này:

Firecrawl CloudSelf-Hosted
Thiết lậpĐăng ký tại firecrawl.dev, nhận API keyTriển khai qua Docker trên máy chủ của bạn
Base URLhttps://api.firecrawl.dev/v2http://your-server:3002/v2
Phù hợp nhất choKiểm tra nhanh, khối lượng thấpSản xuất, dữ liệu nhạy cảm, số lượng yêu cầu không giới hạn
Chi phíGiá dựa trên mức sử dụngChỉ chi phí cơ sở hạ tầng

Chúng tôi chạy Firecrawl bản self-hosted thay vì gọi dịch vụ đám mây: độ trễ thấp hơn và dữ liệu cào về không rời khỏi hạ tầng của mình. Các workflow theo dõi đối thủ chạy trên thiết lập này xử lý hàng trăm trang mỗi ngày.

Cài đặt

Cài đặt Node

Bạn có thể cài đặt node Firecrawl trong n8n thông qua giao diện người dùng:

Settings > Community Nodes > Install > n8n-nodes-firecrawl-v2

Hoặc thông qua dòng lệnh:

cd ~/.n8n
npm install n8n-nodes-firecrawl-v2

Khởi động lại n8n sau khi cài đặt.

Cấu hình Credentials

Tạo một credential mới có kiểu Firecrawl API:

TrườngMặc địnhMô tả
Base URLhttps://api.firecrawl.dev/v2Thay đổi cho các phiên bản tự lưu trữ. Phải bao gồm /v2.
API KeyAPI key Firecrawl của bạn

Authentication sử dụng Authorization: Bearer apiKey. Khi lưu, n8n sẽ kiểm tra kết nối bằng cách cào https://example.com.

Các thao tác

Node Firecrawl cung cấp nhiều thao tác khác nhau để thu thập và trích xuất dữ liệu web. Dưới đây là một số thao tác quan trọng nhất:

1. Scrape

Thao tác được sử dụng phổ biến nhất. Scrape trích xuất nội dung từ một URL duy nhất với hỗ trợ đầy đủ cho JavaScript rendering.

Endpoint: POST /scrape

Tham sốLoạiMặc địnhMô tả
urlStringURL mục tiêu (bắt buộc)

Các tùy chọn Scrape (tất cả đều tùy chọn):

Tham sốMặc địnhMô tả
formatsmarkdownCác định dạng đầu ra: markdown, html, rawHtml, links, screenshot, json, summary, images, audio, changeTracking
onlyMainContenttrueLoại bỏ headers, navigation và footers
includeTagsCác CSS selector để giữ lại (ví dụ: article, .content)
excludeTagsCác CSS selector để loại bỏ (ví dụ: nav, .sidebar)
waitFor0Chờ JS rendering (ms). Tăng lên cho các trang SPA/React.
timeout30000Thời gian chờ yêu cầu (ms), tối đa 300,000
mobilefalseGiả lập viewport của thiết bị di động
blockAdstrueChặn quảng cáo và cookie consent popups
proxyautoChế độ proxy: auto, basic, enhanced
locationCountryMã quốc gia ISO (ví dụ: VN, US)
locationLanguagesMã ngôn ngữ (ví dụ: vi-VN, en-US)

Ví dụ đầu ra:

{
  "markdown": "# Page Title\n\nMain content extracted...",
  "metadata": {
    "title": "Page Title",
    "description": "Meta description",
    "sourceURL": "https://example.com",
    "statusCode": 200
  }
}

2. Crawl

Crawl xử lý toàn bộ trang web bằng cách theo dõi các liên kết từ một URL bắt đầu. Đây là một công việc không đồng bộ có thể mất từ vài phút đến vài giờ tùy thuộc vào kích thước trang web.

Endpoint: POST /crawl

Tham sốMặc địnhMô tả
crawlUrlURL bắt đầu (bắt buộc)
waitForCompletionfalseGiữ thực thi cho đến khi crawl hoàn tất
maxPollTime300Thời gian chờ tối đa tính bằng giây

Các tùy chọn Crawl:

Tham sốMặc địnhMô tả
limit100Số lượng trang tối đa để crawl
maxDiscoveryDepth2Độ sâu liên kết tối đa
includePathsCác mẫu regex để bao gồm (ví dụ: /blog/*, /docs/*)
excludePathsCác mẫu regex để loại trừ (ví dụ: /admin/*, /login)
sitemapincludeXử lý sitemap: include, skip hoặc only
crawlEntireDomainfalseTheo dõi các liên kết cùng cấp và cha trên toàn miền
allowExternalLinksfalseTheo dõi các liên kết đến các miền bên ngoài
allowSubdomainsfalseCrawl các subdomain
delay0Số giây giữa các yêu cầu (buộc concurrency về 1)
formatsmarkdownĐịnh dạng đầu ra cho mỗi trang
onlyMainContenttrueLoại bỏ boilerplate khỏi mỗi trang

Khi waitForCompletion tắt: đầu ra chỉ chứa id của công việc. Sử dụng thao tác Get Crawl Status để truy xuất kết quả sau. Khoảng thời gian polling nội bộ là 2 giây.

3. Get Crawl Status / 4. Cancel Crawl

Thao tácEndpointTham số
Get Crawl StatusGET /crawl/:idcrawlId (job ID từ Crawl)
Cancel CrawlDELETE /crawl/:idcancelCrawlId (job ID)

5. Map

Map khám phá tất cả các URL trên một trang web mà không cần cào nội dung của chúng. Nó nhanh hơn đáng kể so với Crawl và hoạt động tốt như một bước đầu tiên trước khi cào có mục tiêu.

Endpoint: POST /map

Tham sốMặc địnhMô tả
mapUrlURL bắt đầu (bắt buộc)
searchTruy vấn tìm kiếm để xếp hạng kết quả theo mức độ liên quan
includeSubdomainstrueBao gồm các URL subdomain
limit5000Số lượng URL tối đa để trả về (tối đa: 100,000)
ignoreQueryParameterstrueLoại bỏ các URL trùng lặp bằng cách loại bỏ query string
ignoreCachefalseBỏ qua bộ nhớ cache sitemap

Search thực hiện tìm kiếm trên web và tùy chọn cào từng trang kết quả. Điều này kết hợp khám phá tìm kiếm và trích xuất nội dung.

Endpoint: POST /search

Tham sốMặc địnhMô tả
queryTruy vấn tìm kiếm (bắt buộc)
limit5Số lượng kết quả tối đa
langMã ngôn ngữ (ví dụ: vi, en)
countryMã quốc gia (ví dụ: VN, US)
scrapeOptionsÁp dụng các tùy chọn scrape cho mỗi kết quả

Ứng dụng thực tế cho doanh nghiệp Việt

Sự kết hợp giữa n8n và Firecrawl mở ra nhiều khả năng cho doanh nghiệp Việt Nam:

  • Theo dõi đối thủ cạnh tranh: Tự động crawl và so sánh giá cả, sản phẩm từ các website đối thủ
  • Thu thập dữ liệu thị trường: Scrape thông tin từ các sàn thương mại điện tử như Shopee, Tiki, Lazada
  • Tổng hợp tin tức ngành: Map và crawl các trang tin tức công nghệ, tài chính để cập nhật xu hướng
  • Lead generation: Search và scrape thông tin doanh nghiệp từ các danh bạ trực tuyến

hecigo và node này

n8n-nodes-firecrawl-v2 là node cộng đồng do hecigo phát triển và duy trì trên npm. Gặp trang mà node chưa cào được thì mở issue trên GitHub kèm URL, đó là cách nhanh nhất để nó được xử lý.

Cào được dữ liệu mới là nửa đầu. Nửa sau là đưa dữ liệu đó vào đúng chỗ trong hệ thống của bạn mà không trùng, không mất, và biết được khi nào một lần cào thất bại. Nếu bạn đang vướng ở nửa sau, mô tả cho chúng tôi hai hệ thống đang cần nối và chỗ nào đang sai.

Nguồn tham khảo

Related Articles