Việc trích xuất dữ liệu từ website là một nhu cầu thiết yếu trong nhiều lĩnh vực: nghiên cứu thị trường, phân tích dữ liệu, lập báo cáo tài chính, công tác quản lý bán hàng, và thậm chí ciutad. Trong thời đại số, dữ liệu luôn luôn là nguồn tài nguyên quý giá, nhưng cách thu thập dữ liệu thủ công từ trang web thường tốn thời gian, dễ sai sót và không thể mở rộng. Đó là lý do tại sao tự động hoá quá trình trích xuất dữ liệu – từ website tới Excel – trở thành một kỹ năng quan trọng. Bài viết này sẽ cung cấp một hướng dẫn chi tiết, từ những công cụ cơ bản đến các kỹ thuật nâng cao, giúp bạn thiết lập luồng công việc tự động hoàn chỉnh.
Có thể bạn quan tâm: Cách Kết Hợp Tên Và Họ Trong Excel: Hướng Dẫn Chi Tiết Và Công Thức Thực Hành
1. Nắm vững khái niệm cơ bản
1.1. Trích xuất dữ liệu (Web Scraping)
Đây là quá trình платформ(website) lấy dữ liệu bằng cách gửi yêu cầu HTTP, nhận HTML, và phân tích nội dung-uile để trích xuất thông tin. Kết quả thường được lưu dưới.Org( Excel, CSV, JSON, v.v.)
1.2. Excel là công cụ “điểm cuối”
Excel là một bảng tính mạnh mẽ, có thể деревян dữ liệu, tạo báo cáo, biểu đồ. Khi dữ liệu được đưa vào Excel, người dùng có thể dùng tính năng Power Query, VBA, hoặc add-ins để làm mới dữ liệu, xử lý, và trực quan hóa.
1.3. Tự động hoá
Sử dụng các công cụ lập trình (Python, VBA) hoặc phần mềm chuyên dụng để phát hiện thay đổi trên website, lấy dữ liệu mới và ghi vào Excel mà không cần can thiệp thủ công.
Có thể bạn quan tâm: Cách Thêm Năm Vào Một Ngày Trong Excel: Hướng Dẫn Chi Tiết Và Thực Tiễn
2. Cách tiếp cận phổ biến
| Phương pháp | Ưu điểm | Nhược điểm | Khi nào nên dùng |
|---|---|---|---|
| Pesquisa web thủ công | Dễ học, không cần công cụ | Tốn thời gian, dễ sai sót | Dữ liệu nhỏ, không thường xuyên |
| Power Query (Excel) | Tích hợp, không cần lập trình | Giới hạn với trang web phức tạp | Cập nhật dữ liệu định kỳ, bảng dữ liệu đơn giản |
| VBA (Excel) | Tự động hoá trong Excel | Cần kỹ năng lập trình VBA | Khi cần tương tác sâu với Excel |
| Python + BeautifulSoup + Pandas | Linh hoạt, mạnh mẽ | Cần môi trường Python | Dữ liệu lớn, phức tạp, cần biến đổi nâng cao |
| Selenium | Giao diện người dùng, xử lý JS | Chậm, tài nguyên nặng | Truy cập trang cần JavaScript động |
| Phần mềm chuyên dụng (Octoparse, ParseHub, Import.io) | Không cần lập trình | Chi phí, hạn chế | Dữ liệu lớn, cần tính năng kéo-thả |
Có thể bạn quan tâm: Cách Mở File Csv Trong Excel
3. Hướng dẫn chi tiết: Trích xuất dữ liệu từ website tới Excel bằng Python
Python là một nền tảng phổ biến nhất cho web scraping. Ở đây, chúng ta sẽ làm theo các bước:
- Cài đặt môi trường (Python + thư viện)
- Phân tích cấu trúc HTML
- Gửi yêu cầu và lấy nội dung
- Phân tích dữ liệu (BeautifulSoup hoặc lxml)
- Lưu dữ liệu vào Excel (pandas + openpyxl)
- Tự động hoá (lên lịch, lưu trữ kết quả)
3.1. Cài đặt môi trường
Mở terminal (cmd, PowerShell, terminal macOS/Linux) và chạy:
python -m venv env
source env/bin/activate # Windows: .\env\Scripts\activate
pip install requests beautifulsoup4 pandas openpyxl
requests– gửi yêu cầu HTTPbeautifulsoup4– phân tích HTMLpandas– xử lý dữ liệu, ghi Excelopenpyxl– hỗ trợ ghi file .xlsx markedly
3.2. Phân tích trang web
Đầu tiên, hãy mở website cần trích xuất. Ví dụ: danh sách sản phẩm trên một trang thương mại điện tử. Mở công cụ phát triển (F12), nhìn vào phần Elements để xác định:
- Tag chứa dữ liệu (ex:
<div class="product">) - Thuộc tính ID hoặc class
- Cấu trúc lặp (thường là một danh sách li, tr…)
Giả sử chúng ta muốn lấy tên, giá, và link sản phẩm.
3.3. Gửi yêu cầu Backup
import requests url = 'https://example.com/products'
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
}
response = requests.get(url, headers=headers)
response.raise_for_status() # Kiểm tra lỗi html = response.text
3.4. Phân tích dữ liệu
from bs4 import BeautifulSoup soup = BeautifulSoup(html, 'html.parser')
products = soup.select('div.product') # Sử dụng CSS selector
data = for prod in products: name = prod.select_one('h2.title').text.strip() price = prod.select_one('span.price').text.strip() link = fortæ 'a''href'.strip() data.append({'Name': name, 'Price': price, 'Link': link})
3.5. Lưu vào Excel
import pandas as pd df = pd.DataFrame(data)
df.to_excel('products.xlsx', index=False, engine='openpyxl')
Bạn có thể mở file products.xlsx trong Excel để kiểm tra.
3.6. Tự động hoá
3.6.1. Lên lịch (Windows Task Scheduler / cron)
- Windows: Tạo file batch
.batchạy script Python. Sử dụng Task Scheduler để chạy định kỳ.
bat @echo off cd /d "C:\path\to\project" .\env\Scripts\activate python scrape.py
- Linux/macOS: Thêm vào crontab
bash crontab -e # Thêm dòng sau để chạy mỗi ngày 02:00 0 2 /usr/bin/python3 /path/to/project/scrape.py >> /path/to/project/log.txt 2>&1
3.6.2. Ghi dữ liệu vào một sheet đã tồn tại
Bạn có thể dải thêm dữ liệu vào file Excel hiện có:
with pd.ExcelWriter('products.xlsx', engine='openpyxl', mode='a', if_sheet_exists='overlay') as writer: df.to_excel(writer, sheet_name='Data', index=False, header=False, startrow=writer.sheets'Data'.max_row)
Điều này sẽ ghi dữ liệu vào cuối sheet Data.
3.6.3. Xử lý lỗi và thông báo
- Sử dụng
try-exceptđể bắt lỗi khi request thất bại. - Gửi email hoặc Slack nếu có lỗi.
import smtplib
from email.mime.text import MIMEText def send_APP(email_subject, body): # Cấu hình SMTP pass
4. Sử dụng Excel Power Query (Get & Transform)
Power Query là công cụ mạnh mẽ trong Excel để trích xuất, biến đổi, và tải dữ liệu từ nhiều nguồn, bao gồm cả website.
4.1. Mở Power Query

Có thể bạn quan tâm: How To Consolidate Data In Excel From Multiple Worksheets
- Excel > Data > Get Data > From Other Sources > From Web.
- Nhập URL và nhấn OK.
Excel sẽ gửi yêu cầu và hiển thị một cửa sổ Navigator với các bảng hoặc dữ liệu JSON có sẵn. Chọn bảng cần lấy, sau đó click Transform Data để mở Power Query Editor.
4.2. Xử lý dữ liệu trong Power Query
- Lọc: Chọn cột, click Filter.
- Thay đổi kiểu: Click icon ở đầu cột.
- Tạo cột tính toán:
Add Column>Custom Column. - Tách cột:
Split Column> theo ký tự.
4.3. Tải dữ liệu vào Excel
Click Close & Load. Dữ liệu sẽ xuất hiện dưới dạng bảng. Bạn có thể lên lịch refresh:
- Excel > Data > Refresh All (manual) hoặc Refresh > Refresh All > Connection Properties > Refresh every X minutes.
4.4. Khi nào dùng Power Query?
- Dữ liệu có cấu trúc bảng, không cần xử lý phức tạp.
- Bạn chỉ làm việc trong môi trường Excel.
- Không muốn cài đặt Python.
5. Tự động hoá với VBA
Nếu bạn đã quen với Excel và muốn giữ mọi thứ trong một file, VBA là lựa chọn phù hợp.
5.1. Mã mẫu: Gửi yêu cầu HTTP và phân tích
Sub GetWebData() Dim http As Object Set http = CreateObject("MSXML2.XMLHTTP") Dim url As String url = "https://example.com/products" http.Open "GET", url, False http.setRequestHeader "User-Agent", "Mozilla/5.0" http.send If http.Status = 200 Then Dim html As Object Set html = CreateObject("htmlfile") html.body.innerHTML = http.responseText Dim items As Object Set items = html.getElementsByClassName("product") Dim i As Integer i = 1 Dim item As Object For Each item In items Cells(i, 1).Value = item.getElementsByTagName("h2")(0).innerText Cells(i, 2).Value = item.getElementsByTagName("span")(0).innerText Cells(i, 3).Value = item.getElementsByTagName("a")(0).href i = i + 1 Next item Else MsgBox "Error: " & http.Status End If
End Sub
5.2. Lên lịch chạy VBA
- Tạo macro và gán vào một button.
- Sử dụng
Application.OnTimeđể chạy định kỳ.
Sub ScheduleJob() Application.OnTime Now + TimeValue("00:10:00"), "GetWebData"
End Sub
5.3. Khi nào dùng VBA?
- Bạn chỉ cần một file Excel duy nhất.
- Không muốn cài đặt Python.
- Dữ liệu có cấu trúc đơn giản.
6. Công cụ trích xuất dữ liệu không lập trình
Nếu bạn không muốn viết code, có thể dùng các phần mềm kéo-thả:
| Công cụ | Đặc điểm | Giá | Thích hợp |
|---|---|---|---|
| Octoparse | Giao diện trực quan, hỗ trợ JavaScript | Miễn phí (có giới hạn) / Cấp phí | Dữ liệu lớn, trang động |
| ParseHub | Dễ sử dụng, hỗ trợ điều kiện | Miễn phí (có giới hạn) | Các trang phức tạp |
| Import.io | API, tương thích với Excel | Miễn phí (có giới hạn) | Khi cần dữ liệu API |
| Web Scraper (Chrome extension) | Trình duyệt, lưu JSON/CSV | Miễn phí | Dữ liệu nhỏ, thử nghiệm |
Ví dụ: Octoparse
- Tải và cài đặt Octoparse.
- Mở Octoparse, tạo task mới, nhập URL.
- Dùng công cụ click để chọn phần tử (đánh dấu).
- Octoparse tự động nhận dạng lặp, tạo template.
- Chạy task, lưu dữ liệu vào CSV.
- Import CSV vào Excel hoặc sử dụng tính năng “Export to Excel”.
7. Xử lý dữ liệu sau khi trích xuất
Sau khi dữ liệu đã được đưa vào Excel, bạn có thể:
- Làm sạch dữ liệu: Remove duplicates, trim spaces, convert formats.
- Tính toán: Thêm cột tính toán (tổng, trung bình, tỷ lệ).
- Báo cáo: Tạo PivotTable,/// biểu đồ.
- Lưu trữ: Lưu dưới .csv, .xlsx, hoặc upload lên Google Sheets.
7.1. Làm sạch nhanh bằng Power Query
- Trim:
Transform>Format>Trim. - Remove duplicates:
Remove Rows>Remove Duplicates. - Replace errors:
Replace Errors.
7.2. Tự động hóa báo cáo
- Sử dụng
Excel Templatesvới PivotTable đã được thiết lập. - Đặt macro để refresh dữ liệu và lưu báo cáo Mengen.
8. Thực hành thực tế: Trích xuất dữ liệu giá cổ phiếu
Giả sử bạn muốn lấy giá cổ phiếu từ trang Yahoo Finance và lưu vào Excel.
8.1. URL mẫu
https://finance.yahoo.com/quote/AAPL/history?p=AAPL
8.2. Python code
import requests
import pandas as pd url = "https://query1.finance.yahoo.com/v7/finance/download/AAPL?period1=0&period2=9999999999&interval=1d&events=history&includeAdjustedClose=true" shaw = requests.get(url)
df = pd.read_csv(pd.compat.StringIO(shaw.text))
df.to_excel('aapl_history.xlsx', index=False)
8.3. Tự động hoá
- Lên lịch chạy script mỗi ngày để ghi lại giá cổ phiếu.
- Dùng Power Query trong Excel để cập nhật dữ liệu từ file vừa tạo.
9. Mẹo bảo trì và tối ưu
| Mẹo | Giải thích |
|---|---|
| Xử lý lỗi | Sử dụng try-except, ghi log, gửi email khi lỗi. |
| Giới hạn tần suất | Thêm time.sleep(1) giữa các request để tránh block IP. |
| Sử dụng proxy | Khi website cản trở, hãy dùng proxy hoặc VPN. |
| Định dạng ngày | Khi trích xuất dữ liệu ngày, luôn chuyển đổi sang datetime. |
| Kiểm tra robots.txt | Đảm bảo tuân thủ chính sách của website. |
10. Kết luận
Trích xuất dữ liệu từ website sang Excel không chỉ là một kỹ năng công nghệ mà còn là một công cụ chiến lược giúp doanh nghiệp và cá nhân tối ưu hoá quyết định.એક phương pháp phù hợp tùy thuộc vào quy mô dữ liệu, mức độ phức tạp, và mức độ tự động hoá cần thiết. Dưới đây là tóm tắt nhanh:
| Phương pháp | Tốt cho | Yêu cầu kỹ thuật |
|---|---|---|
| Python (requests + BeautifulSoup + Pandas) | Dữ liệu lớn, phức tạp | Kiến thức lập trình Python |
| Selenium | Trang động, JS | Kiến thức Selenium, driver |
| Power Query (Excel) | Dữ liệu bảng, thường xuyên | Không cần lập trình |
| VBA | Tự động trong Excel | Kiến thức VBA |
| Phần mềm kéo-thả | Không muốn code | Trung bình – cao |
Với những công cụ và kỹ thuật đã nêu, bạn có thể thiết lập một luồng công việc trích xuất dữ liệu tự động, giảm thiểu công sức thủ công, nâng cao độ chính xác và thời gian phản hồi. Hãy thử áp dụng vào dự án hiện tại của mình, tối ưu quy trình và biến dữ liệu thành tài sản có giá trị thực sự.

Tiến sĩ Lê Thống Nhất sinh năm 1955 tại Nghệ An, là nhà giáo, nhà báo và doanh nhân trong lĩnh vực giáo dục. Ông từng giảng dạy Toán học tại Trường THPT Chuyên Phan Bội Châu và đảm nhiệm nhiều vai trò trong ngành giáo dục, từ viết sách, biên soạn tài liệu đến sáng lập các dự án hỗ trợ học tập trực tuyến.
Ông là người sáng lập BigSchool – nền tảng giáo dục trực tuyến kết nối giáo viên và học sinh cả nước. Ngoài ra, ông còn nổi tiếng với vai trò tác giả, diễn giả truyền cảm hứng và khách mời trên nhiều chương trình truyền hình, trong đó có “Ai là triệu phú” trên truyền hình VTV.
Trong suốt sự nghiệp, Tiến sĩ Lê Thống Nhất đã nhận nhiều giải thưởng giáo dục và được biết đến như một người luôn đổi mới, ứng dụng công nghệ vào dạy và học, góp phần lan tỏa tri thức và niềm say mê học tập cho thế hệ trẻ.
