hecigo

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

    hecigo9 phút đọc
    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