🎯 Trình duyệt đám mây tùy chỉnh, chống phát hiện được hỗ trợ bởi Chromium tự phát triển, thiết kế dành cho trình thu thập dữ liệu webtác nhân AI. 👉Dùng thử ngay
Quay lại blog

Trích xuất dữ liệu từ web trong Excel: Power Query, VBA và các phương pháp API

Emily Chen
Emily Chen

Advanced Data Extraction Specialist

28-Jul-2026

Tóm tắt ngắn:

  • Sử dụng Power Query khi một trang web cung cấp một bảng HTML ổn định hoặc đầu cuối JSON; nó cung cấp cho Excel một quy trình biến đổi có thể làm mới và được tài liệu.
  • Sử dụng VBA khi người dùng workbook cần một nút để nhập dữ liệu hoặc một phương thức chuyển giao CSV kiểm soát. Tránh việc làm cho VBA phân tích cấu trúc trang đang thay đổi.
  • Đối với các trang được kết xuất bằng JavaScript hoặc đã được xác thực lưu lượng truy cập, hãy lấy nội dung qua một API trước, sau đó để Excel biến đổi dữ liệu trả về.
  • Thiết kế dễ bảo trì nhất tách biệt việc thu thập dữ liệu khỏi phân tích: dịch vụ nguồn trả về một lược đồ ổn định, và Excel chịu trách nhiệm về lọc, kết nối, pivot và biểu đồ.

Việc thu thập dữ liệu trên web trong Excel có thể bao gồm bốn công việc rất khác nhau: sao chép một bảng một lần, làm mới một bảng công khai, gọi một API JSON, hoặc cung cấp một workbook từ một trang yêu cầu kết xuất trình duyệt. Chọn công cụ dựa trên hành vi của trang là đáng tin cậy hơn so với việc chọn dựa trên sự quen thuộc.

Hướng dẫn này đề cập đến Power Query, VBA và một phương pháp API trước. Các ví dụ chỉ giới hạn ở dữ liệu công khai mà dự án được phép thu thập. Đừng sử dụng chúng để truy cập thông tin riêng tư, đã xác thực, cá nhân hoặc bị hạn chế mà không có sự cho phép rõ ràng.

Chọn phương pháp trước khi xây dựng workbook

Hành vi nguồn Đường dẫn Excel tốt nhất Có thể làm mới Mức độ lập trình Hạn chế chính
Bảng nhỏ, nhìn thấy một lần Sao chép và dán Không Không có Thủ công và khó để tái tạo
Bảng HTML ổn định Power Query: Từ Web Thấp Có thể không thấy nội dung được kết xuất bởi khách hàng
Điểm cuối JSON hoặc CSV công khai Power Query hoặc VBA Trung bình Cần một hợp đồng phản hồi ổn định
Trang công khai kết xuất bằng JavaScript API thu thập dữ liệu, sau đó Power Query Trung bình Cần một dịch vụ bên ngoài
Quy trình workbook điều khiển bằng nút VBA gọi một điểm cuối CSV hoặc JSON Trung bình Bảo mật macro và bảo trì

Nguyên tắc thực tế là đơn giản: giữ cho Excel chịu trách nhiệm về sự biến đổi dạng bảng, không phải mô phỏng trình duyệt. Khi một trang web là lớp trình bày thay vì nguồn dữ liệu, hãy tìm một đầu cuối được tài liệu rõ ràng hoặc đặt một dịch vụ thu thập dữ liệu ở phía trước workbook.

Phương pháp 1: Nhập một bảng nhìn thấy bằng Power Query

Quy trình được hỗ trợ của Microsoft là Dữ liệu > Từ Web, sau đó chọn một bảng được phát hiện trong Trình Duyệt và tải nó vào workbook. Toàn bộ trình tự xuất hiện trong hướng dẫn nhập dữ liệu từ web của Microsoft.

Các bước thực hiện

  1. Mở một workbook và chọn Dữ liệu.
  2. Chọn Từ Web trong nhóm Nhận & Biến đổi Dữ liệu.
  3. Dán URL của trang công khai được phép.
  4. Chọn bảng trong Trình Duyệt.
  5. Chọn Biến đổi Dữ liệu nếu cần làm sạch các cột, hoặc Tải để ghi trực tiếp vào một sheet.
  6. Đổi tên truy vấn và bảng để mục đích của chúng rõ ràng.
  7. Chọn Làm mới khi nguồn cần được lấy lại.

Power Query lưu trữ các bước biến đổi. Điều này quan trọng vì một truy vấn có thể tái tạo có thể loại bỏ các cột, thiết lập kiểu, tách văn bản, và kết nối dữ liệu tham khảo theo cùng một cách trong mỗi lần làm mới. Microsoft cũng tài liệu rằng một bảng web đã được tải có thể được cập nhật bằng Làm mới truy vấn trong cùng một quy trình làm mới Excel.

Khi Từ Web không trả về bảng hữu ích nào

Trang có thể kết xuất dữ liệu của nó bằng JavaScript sau khi HTML ban đầu được gửi đến. Nó cũng có thể công khai giá trị thông qua yêu cầu XHR hoặc fetch thay vì một bảng HTML. Trong những trường hợp đó, kết quả của Trình Duyệt có thể trống mặc dù trình duyệt hiển thị các hàng.

Chỉ mở công cụ phát triển trình duyệt để xác định một đầu cuối dữ liệu được tài liệu rõ ràng và cho phép—not để đánh bại các kiểm soát truy cập. Nếu có một đầu cuối JSON ổn định, Power Query có thể gọi nó trực tiếp. Nếu cần xác thực lưu lượng hoặc kết xuất trình duyệt, hãy sử dụng phương pháp API trước được đề cập sau trong hướng dẫn này.

Phương pháp 2: Gọi JSON với Power Query M

Hàm Web.Contents của Power Query thực hiện các yêu cầu HTTP và trả về một phản hồi nhị phân có thể được chuyển đến Json.Document. Microsoft tài liệu các tùy chọn yêu cầu của nó, bao gồm Headers, Content, RelativePath, Query, và ApiKeyName, trong tài liệu tham khảo Web.Contents.

Điều kiện tiên quyết

  • Excel có Power Query
  • Một token API Scrapeless đã được nhập qua hộp thoại thông tin xác thực API Web của workbook
  • Một URL mục tiêu công khai đã được cho phép
  • Một bao bọc phản hồi JSON đã biết

Khối mã Power Query M dưới đây là một ví dụ về yêu cầu tiên quyết vì nó cần token và mục tiêu của người đọc. Nó gọi API Thu thập Dữ liệu Toàn cầu, đọc HTML trả về từ data, và tạo một bảng một hàng có thể cung cấp cho một bộ phân tích hoặc sheet kiểm tra sau này.

powerquery Copy
let
    Endpoint = "https://api.scrapeless.com",
    TargetUrl = Excel.CurrentWorkbook(){[Name="AuthorizedTargetUrl"]}[Content]{0}[Column1],
    Payload = Json.FromValue([
        actor = "unlocker.webunlocker",
        proxy = [country = "ANY"],
        input = [
            url = TargetUrl,
            jsRender = [
                enabled = true,
                response = [type = "html", options = []]
            ]
        ]
    ]),
    Raw = Web.Contents(
        Endpoint,
        [
            RelativePath = "api/v2/unlocker/request",
            Headers = [
                #"Content-Type" = "application/json"
            ],
            Content = Payload,
            ApiKeyName = "x-api-token"
        ]
    ),
    Envelope = Json.Document(Raw),
    Checked = if Envelope[code] = 200 and Envelope[data] <> null
        then Envelope[data]
        else error "The acquisition response did not contain page data",
    Output = #table(
        {"source_url", "html"},
        {{TargetUrl, Checked}}
    )
in
    Output

Sau khi tạo truy vấn, hãy chọn Web API khi Excel hỏi về thông tin xác thực và dán mã thông báo ở đó. TênKhóaApi xác định tên tham số trong khi giữ bí mật ra khỏi nguồn M. Hành vi xác thực được minh họa trong ví dụ khóa API an toàn của Microsoft.

Hình dạng yêu cầu API hiện tại và các tùy chọn JavaScript cũng có sẵn trong tài liệu JS Render của Scrapeless.

Chuyển đổi HTML trả về thành các cột Excel ổn định

Tải một tài liệu HTML hoàn chỉnh vào một ô là một cầu nối chẩn đoán, không phải là tập dữ liệu cuối cùng. Các sổ làm việc sản xuất nên nhận một sơ đồ gọn gàng.

Ví dụ:

Cột Loại Ý nghĩa
source_url Văn bản Trang chuẩn bị thu thập
collected_at Ngày/Giờ Thời gian thu thập
name Văn bản Tên thực thể đã chuẩn hóa
price Số thập phân Giá không có ký hiệu tiền tệ
currency Văn bản Mã tiền tệ ISO
availability Văn bản Trạng thái sẵn có đã chuẩn hóa

Có hai cách sạch để đạt được hợp đồng đó:

  • Yêu cầu lớp thu thập trả về các trường có cấu trúc.
  • Phân tích HTML trả về bên ngoài Excel, sau đó cho phép JSON hoặc CSV cho Power Query.

Cả hai đều giảm phụ thuộc của sổ làm việc vào đánh dấu trang. Một sổ làm việc mà mong đợi sáu lĩnh vực được đặt tên dễ kiểm tra hơn một cái chứa hàng chục bộ chọn và các bước làm sạch văn bản.

Nếu trang cần bao gồm việc kết xuất JavaScript trước khi các trường đó có, hãy kiểm tra Universal Scraping API với một URL được ủy quyền trước khi thiết kế lại sổ làm việc.

Phương pháp 3: Sử dụng VBA cho việc chuyển giao CSV có kiểm soát

VBA hữu ích khi một nhà phân tích cần một nút để nhập tệp vào một bảng tính đã biết. Giữ việc thu thập dữ liệu trên web bên ngoài macro và để macro tiêu thụ một URL CSV ổn định. Điều này tránh làm phụ thuộc một sổ làm việc vào HTML thay đổi.

Điều kiện tiên quyết

  • Excel trên máy tính để bàn với macro được bật theo chính sách của tổ chức
  • Một điểm cuối HTTPS được phép trả về CSV UTF-8
  • Một bảng tính có tên ImportedData
  • Một phạm vi được đặt tên CsvEndpoint chứa URL điểm cuối

Khối này là khoảng trống điều kiện tiên quyết vì điểm cuối và chính sách sổ làm việc là cụ thể cho môi trường của người đọc.

vb Copy
Option Explicit

Public Sub ImportCsv()
    Dim endpoint As String
    Dim target As Worksheet
    Dim query As QueryTable

    endpoint = ThisWorkbook.Names("CsvEndpoint").RefersToRange.Value
    Set target = ThisWorkbook.Worksheets("ImportedData")

    target.Cells.ClearContents

    Set query = target.QueryTables.Add( _
        Connection:="TEXT;" & endpoint, _
        Destination:=target.Range("A1"))

    With query
        .TextFileParseType = xlDelimited
        .TextFileCommaDelimiter = True
        .TextFilePlatform = 65001
        .RefreshStyle = xlOverwriteCells
        .Refresh BackgroundQuery:=False
    End With
End Sub

Macro này được cố tình thu hẹp: nó nhập một hợp đồng CSV và để việc thu thập, kết xuất, và logic truy cập cho dịch vụ sở hữu chúng. Nếu điểm cuối cần xác thực tùy chỉnh, kho lưu trữ thông tin xác thực của Power Query thường là phương án tốt hơn so với việc nhúng một mã thông báo vào VBA.

Microsoft lập tài liệu rằng Workbook.RefreshAll làm mới các vùng dữ liệu bên ngoài và các báo cáo PivotTable trong tài liệu Excel VBA RefreshAll. Điều đó có thể hỗ trợ một nút làm mới ở cấp sổ làm việc sau khi mỗi truy vấn đã được cấu hình và kiểm tra.

Lấy dữ liệu web sử dụng API trong Excel

Thiết kế theo hướng API có hai giai đoạn:

  1. Thu thập và xác thực trang: kết xuất JavaScript khi cần, xử lý xác thực lưu lượng và xác nhận rằng nội dung mong đợi đã được trả về.
Copy
2. **Chuyển đổi và phân tích trong Excel:** định hình phản hồi thành các cột, kết hợp các bảng tra cứu, tạo bảng tổng hợp và công bố biểu đồ.

[API Scraping Universal](https://www.scrapeless.com/vi/product/universal-scraping-api?utm_source=website&utm_medium=blog&utm_campaign=universalscrapingapi&utm_term=web-scraping-in-excel) được xây dựng cho giai đoạn đầu tiên. Power Query vẫn là kết nối giao diện cho bảng tính. Ranh giới này cho phép các nhóm thay đổi phương pháp thu thập mà không cần xây dựng lại mọi công thức và biểu đồ.

Sử dụng [trang giá Scrapeless](https://www.scrapeless.com/vi/pricing?utm_source=website&utm_medium=blog&utm_campaign=universalscrapingapi&utm_term=web-scraping-in-excel) để so sánh chi phí dịch vụ với thời gian kỹ thuật cần thiết để hoạt động hạ tầng trình duyệt. Để có cái nhìn tổng quát hơn về các định dạng phản hồi phù hợp với quy trình Excel, hãy xem [cập nhật định dạng phản hồi API Scraping Universal](https://www.scrapeless.com/vi/blog/response-formats-update?utm_source=website&utm_medium=blog&utm_campaign=universalscrapingapi&utm_term=web-scraping-in-excel).

## Các vấn đề và cách khắc phục phổ biến

### Trình duyệt không hiển thị bảng

Trang có thể không tiết lộ bảng HTML ổn định trong phản hồi ban đầu. Tìm nguồn JSON hoặc CSV được phép. Nếu giá trị chỉ xuất hiện sau JavaScript, sử dụng một lớp thu thập trả về nội dung hoàn chỉnh.

### Làm mới trả về lỗi cấp độ riêng tư

Power Query cách ly các nguồn dữ liệu theo cài đặt riêng tư. Xem xét cấu hình nguồn của bảng tính và tránh kết hợp dữ liệu tổ chức riêng tư với nguồn công khai trừ khi chính sách cho phép.

### Một truy vấn hoạt động trên một máy tính nhưng không hoạt động trên máy tính khác

Kiểm tra phiên bản Excel, cài đặt xác thực, vùng tên, chính sách macro và yêu cầu cổng. Thông tin xác thực là cụ thể cho môi trường và không nên di chuyển bên trong tệp bảng tính.

### Bảng tính tải một trang thách thức

Thêm xác thực cấp nội dung trước khi chuyển đổi. yêu cầu trường JSON, tiêu đề CSV hoặc dấu hiệu trang mong đợi. Từ chối bất kỳ phản hồi nào không đáp ứng hợp đồng đó.

### Các loại cột thay đổi sau khi làm mới

Áp dụng các loại dữ liệu rõ ràng trong Power Query sau bước nguồn. Giữ lại các ký hiệu tiền tệ, phân tách theo vùng và giá trị thiếu ra khỏi các cột số.

### Làm mới mất quá nhiều thời gian

Giảm dữ liệu trước khi nó đến Excel. Lọc theo ngày hoặc định danh tại nguồn, yêu cầu chỉ những trường cần thiết và tải các truy vấn trung gian chỉ dưới dạng kết nối khi bảng tính không cần chúng.

## Từ prototype bảng tính đến nguồn sản xuất

Một quá trình hữu ích là:

1. Chứng minh một URL và một hàng thủ công.
2. Tạo một Power Query với các tên và loại cột rõ ràng.
3. Thêm xác thực nội dung và một bảng lỗi.
4. Chuyển rendering và phân tích HTML vào dịch vụ thu thập.
5. Công bố JSON hoặc CSV với một lược đồ phiên bản.
6. Lên lịch thu thập bên ngoài Excel và giữ lại làm mới bảng tính tập trung vào phân tích.

Điều này giữ cho bảng tính hữu ích mà không biến nó thành một trình duyệt web tự động. Bảng tính trở thành người tiêu thụ dữ liệu sạch, một vai trò mà Excel đảm nhận tốt.

## Kết luận: để Excel phân tích, không bắt chước một trình duyệt

Power Query là lựa chọn mặc định cho các bảng HTML có thể làm mới và các API JSON. VBA là rất quý giá cho các nhập khẩu do người dùng kích hoạt có kiểm soát. Khi một nguồn được phép phụ thuộc vào JavaScript hoặc xác thực lưu lượng, sử dụng một API thu thập và cung cấp cho Excel một hợp đồng dữ liệu ổn định.

Để xây dựng ranh giới đó, [tạo một tài khoản Scrapeless](https://app.scrapeless.com/passport/login?utm_source=website&utm_medium=blog&utm_campaign=universalscrapingapi&utm_term=web-scraping-in-excel), thử nghiệm API Scraping Universal với một URL công khai, xác định các trường mà bảng tính cần, và làm cho những trường đó trở thành hợp đồng làm mới.

## Các Câu hỏi thường gặp

### Excel có thể scraping một trang web mà không cần mã không?

Có. Kết nối From Web của Power Query có thể nhập nhiều bảng HTML thấy được thông qua một quy trình đồ họa. Nó phù hợp nhất với các trang công khai ổn định mà hiển thị bảng trong HTML ban đầu của chúng.

### Tại sao Power Query hiển thị một trang trống?

Các giá trị có thể được render bằng JavaScript sau phản hồi ban đầu, tải từ một điểm cuối riêng biệt, hoặc bị thay thế bởi một trang xác thực lưu lượng. Kiểm tra hành vi nguồn và chọn phương pháp thu thập phù hợp.

### Power Query có tốt hơn VBA cho việc scraping web không?

Power Query thường tốt hơn cho việc chuyển đổi dữ liệu có thể làm mới và quản lý thông tin xác thực. VBA hữu ích cho các nút trên bảng tính và việc nhập tệp có kiểm soát, nhưng đó là một nơi dễ bị hỏng để duy trì phân tích HTML.

### Power Query có thể gọi một API JSON không?

Có. `Web.Contents` có thể lấy một phản hồi, và `Json.Document` có thể phân tích nó thành các bản ghi, danh sách, và bảng. Sử dụng hộp thoại thông tin xác thực thay vì lưu trữ bí mật API trong mã M.

### Bảng tính có thể xử lý các trang được render bằng JavaScript như thế nào?

Sử dụng một dịch vụ thu thập có khả năng render để trả về HTML, JSON hoặc CSV, sau đó kết nối Power Query với đầu ra đó. Điều này giữ cho hành vi của trình duyệt bên ngoài bảng tính.

### Bao lâu thì Excel nên làm mới dữ liệu đã scraping?
Khớp tần suất làm mới với nhu cầu kinh doanh, nguồn quyền, và khả năng dịch vụ. Đối với việc thu thập theo lịch trình hoặc khối lượng lớn, hãy thực hiện việc thu thập bên ngoài Excel và để workbook làm mới từ một tập dữ liệu đã chuẩn bị.

Tại Scrapless, chúng tôi chỉ truy cập dữ liệu có sẵn công khai trong khi tuân thủ nghiêm ngặt các luật, quy định và chính sách bảo mật trang web hiện hành. Nội dung trong blog này chỉ nhằm mục đích trình diễn và không liên quan đến bất kỳ hoạt động bất hợp pháp hoặc vi phạm nào. Chúng tôi không đảm bảo và từ chối mọi trách nhiệm đối với việc sử dụng thông tin từ blog này hoặc các liên kết của bên thứ ba. Trước khi tham gia vào bất kỳ hoạt động cạo nào, hãy tham khảo ý kiến ​​cố vấn pháp lý của bạn và xem xét các điều khoản dịch vụ của trang web mục tiêu hoặc có được các quyền cần thiết.

Bài viết phổ biến nhất

Danh mục