Trích bảng HTML API
Lấy mọi bảng của trang web hoặc đoạn HTML ra JSON hoặc CSV, tự trải ô gộp (rowspan / colspan) và ghép tiêu đề nhiều dòng.
API trích bảng HTML biến các thẻ <table> thành dữ liệu. Đưa vào một URL hoặc html, API trả về từng bảng kèm tiêu đề bảng, id, số dòng, số cột, tên cột và các dòng dưới dạng object theo tên cột (hoặc mảng thuần với format=rows). Ô gộp được trải thành lưới đều, nên ô có rowspan="2" xuất hiện ở cả hai dòng, và tiêu đề nhiều dòng được ghép lại (“Giá / Mua”, “Giá / Bán”).
Tiêu đề được nhận từ <thead> và các dòng <th>, hoặc từ dòng đầu chứa nhãn (header=first hoặc none để chỉ định). Bảng lồng dùng để dàn trang được bỏ qua theo mặc định, min_rows loại bảng quá nhỏ và index chọn một bảng; với format=csv bảng đó được trả về dạng file CSV UTF-8 (có BOM để Excel mở đúng tiếng Việt).
Trang được tải với cùng cơ chế bảo vệ như các API web khác (không truy cập địa chỉ nội bộ, giới hạn 5 MB). Bảng do JavaScript dựng sau khi tải trang thì API không thấy.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
url | body|query | string | không | URL trang (hoặc gửi html). | |
html | body | string | không | HTML thô. | |
index | body|query | number | không | Chỉ lấy bảng này (đếm từ 0). | |
format | body|query | string | không | json | json, rows hoặc csv (kèm index). |
header | body|query | string | không | auto | auto, first hoặc none. |
min_rows | body|query | number | không | 1 | Bỏ bảng có ít dòng dữ liệu hơn. |
Ví dụ
curl -X POST "https://apibox.io.vn/v1/html-tables" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"html":"<table><thead><tr><th rowspan=\"2\">Tên</th><th colspan=\"2\">Giá</th></tr><tr><th>Mua</th><th>Bán</th></tr></thead><tr><td>USD</td><td>25,380</td><td>25,790</td></tr></table>"}'const res = await fetch('https://apibox.io.vn/v1/html-tables', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"html": "<table><thead><tr><th rowspan=\"2\">Tên</th><th colspan=\"2\">Giá</th></tr><tr><th>Mua</th><th>Bán</th></tr></thead><tr><td>USD</td><td>25,380</td><td>25,790</td></tr></table>"
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/html-tables",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"html": "<table><thead><tr><th rowspan=\"2\">Tên</th><th colspan=\"2\">Giá</th></tr><tr><th>Mua</th><th>Bán</th></tr></thead><tr><td>USD</td><td>25,380</td><td>25,790</td></tr></table>"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/html-tables');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"html":"<table><thead><tr><th rowspan=\\"2\\">Tên</th><th colspan=\\"2\\">Giá</th></tr><tr><th>Mua</th><th>Bán</th></tr></thead><tr><td>USD</td><td>25,380</td><td>25,790</td></tr></table>"}',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"source": null,
"table_count": 1,
"returned": 1,
"tables": [
{
"index": 0,
"caption": null,
"id": null,
"rows": 1,
"columns": 3,
"headers": [
"Tên",
"Giá / Mua",
"Giá / Bán"
],
"data": [
{
"Tên": "USD",
"Giá / Mua": "25,380",
"Giá / Bán": "25,790"
}
]
}
]
}
Ứng dụng
- Lấy bảng giá, bảng tỷ giá, bảng thống kê
- Đưa bảng từ Wikipedia vào bảng tính
- Chuyển báo cáo HTML sang CSV cho kế toán
- Theo dõi bảng trên website nhà cung cấp
Hỏi đáp
Ô gộp được xử lý thế nào?
Giá trị được chép vào mọi ô mà nó chiếm, nên dòng nào cũng có cùng số cột.
Có xuất CSV mở được bằng Excel không?
Có, format=csv&index=N trả về UTF-8 có BOM và xuống dòng CRLF, Excel mở giữ nguyên tiếng Việt.
Vì sao thiếu một bảng?
Có thể bảng được dựng bằng JavaScript trên trình duyệt; API đọc HTML máy chủ trả về.
API liên quan
HTML sang Markdown
Chuyển HTML hoặc URL trang web bất kỳ thành Markdown gọn gàng chuẩn GitHub, hỗ trợ bảng, trích xuất bài viết chính và link tuyệt đối.
</>Markdown sang HTML
Chuyển Markdown chuẩn GitHub sang HTML, hỗ trợ bảng và gạch ngang. Kết quả được lọc sẵn script và event handler để chống XSS.
<✓>Lọc HTML an toàn
Loại bỏ script, iframe, form, event handler, style inline và link javascript: khỏi HTML không tin cậy trước khi hiển thị.