TL;DR
- Một bảng web chỉ trở thành CSV hoặc JSON sử dụng được sau khi ý nghĩa hàng và cột của nó được kiểm tra.
- Crawl thu thập HTML bảng đã được render; bộ phân tích của bạn chuyển các ô đã được xem xét thành các bản ghi CSV hoặc JSON.
- Từ chối hoặc xử lý rõ ràng các ô hợp nhất, tiêu đề lồng nhau, đơn vị, và phân trang trước khi xuất.
- Một ảnh chụp màn hình là hữu ích khi lưới nhìn thấy và HTML trả về không đồng nhất.
- Nstdata Crawl xử lý việc render JavaScript và chuyển hướng proxy trong các yêu cầu được quản lý; tài liệu của nó liệt kê sáu thể loại đầu ra: Markdown, HTML, dữ liệu thô, PDF, ảnh chụp màn hình, và liên kết.
Scraping bảng website có nghĩa là gì?
Scraping một bảng có nghĩa là chuyển đổi một lưới hình ảnh hoặc HTML thành các bản ghi với ý nghĩa cột ổn định. Nhiều bảng đơn giản sử dụng <table>, <tr>, <th>, và <td>, nhưng các trang thực có thể sử dụng các ô hợp nhất, tiêu đề lồng nhau, hoặc lưới dựa trên div. CSV cần hình dạng hàng hình chữ nhật; JSON có thể bảo tồn các trường lồng nhau hoặc tùy chọn. Không định dạng nào là đúng cho đến khi các đơn vị, hệ thống tiêu đề, và các giá trị thiếu được diễn giải.
Nstdata Crawl có thể biến một URL hoặc một tập hợp các trang liên kết thành tài liệu cho một tác nhân AI, chỉ mục RAG, hoặc pipeline dữ liệu. Sử dụng các quy tắc trường và kiểm tra chấp nhận của riêng bạn cho kết quả cụ thể: lấy một bảng được phép, bảo tồn các tiêu đề của nó, và xuất các hàng đã được xác thực dưới dạng CSV hoặc JSON. Hướng dẫn crawl toàn bộ trang Nstdata giải thích tùy chọn cấp trang.
Đối với nhiệm vụ hẹp hơn được đề cập ở đây, Hướng dẫn website-to-JSON của Nstdata cung cấp ngữ cảnh hữu ích để chọn trang đại diện đầu tiên.
Bạn cần gì trước khi bắt đầu?
Chọn một trang bảng được ủy quyền và xác định chú thích, tên cột dự kiến, đơn vị, và ít nhất hai hàng đã biết. Quyết định cách xử lý rowspan, colspan, các ô trắng, chú thích, và liên kết bên trong các ô. Nếu bảng thực sự là một lưới div, hãy lập kế hoạch cho một bộ phân tích cụ thể cho mẫu thay vì ép một thư viện bảng HTML phải đoán. Giữ lại URL nguồn và thời gian truy xuất cùng với tệp xuất.
Tài liệu Crawl API sử dụng https://api.nstdata.io, tiêu đề x-api-key, và Content-Type: application/json. Chuẩn bị các trường này trước khi chạy một phương pháp:
| Trường | Những gì cần cung cấp |
|---|---|
url | Một trang hoặc URL vào trang HTTPS được phép |
formats | Các đầu ra được yêu cầu, chẳng hạn như ["markdown"] hoặc ["html","screenshot"] |
onlyMainContent | true chỉ khi lựa chọn nội dung chính phù hợp với nhiệm vụ |
maxDepth, maxPages | Giới hạn rõ ràng cho một công việc trên toàn trang |
includeUrls, excludeUrls | Các mẫu URL giữ cho việc phát hiện trong phạm vi |
timeout | Thời gian chờ cho một nhiệm vụ tính bằng mili giây khi mặc định không phù hợp |
Yêu cầu được quản lý tiêu chuẩn không có trường Proxy Host, Port, Username, Password, hoặc Protocol riêng biệt. Kiểm tra trang giá cả Crawl hiện tại để biết giới hạn và phí tài khoản trước khi thực hiện một công việc lớn.
Xem xét chính sách truy cập và phạm vi của mục tiêu. Giao thức loại trừ Robots xác định cách mà các trình thu thập dữ liệu đọc quy tắc của robots; nó không cấp quyền sử dụng nội dung. Giữ thông tin đăng nhập và dữ liệu riêng tư ra khỏi các ví dụ và nhật ký chẩn đoán.
Hướng dẫn Nstdata về các trang web động là một tài liệu đồng hành để xác định các kiểm tra chấp nhận trước khi bạn tự động hóa quy trình làm việc.
Bảng HTML trở thành CSV hoặc JSON như thế nào?
Nstdata Crawl có thể render JavaScript và trả về HTML đã được làm sạch hoặc dữ liệu trang thô. API của nó không hứa hẹn xuất khẩu bảng CSV hoàn chỉnh trong tài liệu nhìn thấy. Sử dụng Crawl để lấy trạng thái trang mong muốn, sau đó phân tích một bảng đã được xem xét trong mã của riêng bạn. Chuyển hướng proxy tích hợp loại bỏ nhu cầu đưa thông tin đăng nhập proxy riêng biệt vào một yêu cầu Crawl chuẩn. Lưu một ảnh chụp màn hình khi bảng nhìn thấy và HTML trả về không đồng nhất.
Đối với một URL đã biết, một lần scrape trang đơn sẽ lấy được một kết quả. Đối với một phần trang web, POST /api/v1/crawl phát hiện các trang liên kết đệ quy trong phạm vi độ sâu, số lượng trang, và quy tắc URL đã cung cấp. Tài liệu liệt kê Markdown, HTML, dữ liệu thô, PDF, ảnh chụp màn hình, và liên kết là sáu thể loại đầu ra; trang sản phẩm cũng tiếp thị JSON, nhưng một lược đồ JSON cụ thể cho miền vẫn cần ánh xạ trường rõ ràng. Giữ mỗi bản ghi được chấp nhận gắn với URL nguồn và metadata trả về của nó.
Kiểm tra một trang web nặng JavaScript đại diện trước khi mở rộng. Trạng thái đã được kết xuất có thể phụ thuộc vào thời gian, khu vực, sự đồng ý, hoặc một phiên đăng nhập. So sánh HTML được trả về hoặc một ảnh chụp màn hình với trạng thái trang dự kiến; nếu chúng khác nhau, chỉ điều chỉnh những gì đã được tài liệu hóa về việc kết xuất và các điều khiển chờ.
Làm Thế Nào Để Lấy Bảng Trang Web Vào CSV Hoặc JSON?
Kiểm tra cấu trúc bảng thực tế trước, lấy HTML đã được kết xuất, và sau đó chuẩn hóa các ô thành các bản ghi. Bước phân tích là một phần của quy trình làm việc vì Crawl không tài liệu hóa một điểm kết thúc bảng CSV hoàn chỉnh.
Phương Pháp 1: Kiểm Tra Một Bảng Trong Crawl Playground
Tốt nhất để hiểu xem bảng có tồn tại trong DOM đã được kết xuất hay không.
Bước 1: Mở trang mục tiêu
Đi tới Dashboard → Crawl Playground và nhập URL bảng được phép. [Ảnh chụp màn hình: URL mục tiêu và các bộ chọn định dạng đầu ra.]
Bước 2: Yêu cầu HTML và một ảnh chụp màn hình
Chọn đầu ra HTML và ảnh chụp màn hình. Kết xuất trang nếu các hàng bảng xuất hiện sau khi JavaScript chạy; sử dụng các điều khiển chờ đã được tài liệu hóa hiển thị trong Playground.
Bước 3: So sánh cấu trúc
Kiểm tra rằng HTML được trả về chứa <table> như mong đợi và các tiêu đề hiển thị của nó khớp với ảnh chụp màn hình. Nếu dữ liệu chỉ nằm trong một canvas hoặc hình ảnh, một bộ phân tích HTML không thể phục hồi các ô trực tiếp.
Phương Pháp 2: Lấy Bảng Đã Được Kết Xuất Qua API
Tốt nhất khi trang mục tiêu thay đổi thường xuyên.
Bước 1: Lưu trữ khóa Crawl
Giữ NSTDATA_API_TOKEN ở phía máy chủ và gửi nó dưới dạng x-api-key.
Bước 2: Yêu cầu HTML
Sử dụng tuyến đường khởi đầu nhanh cho một trang đã được tài liệu hóa bên dưới. Giữ HTML được trả về hoặc htmlRef và siêu dữ liệu trang để phân tích; xác nhận tuyến đường được tạo ra trong Playground vì tài liệu hiển thị các nhãn không nhất quán ở nơi khác.
Đặt NSTDATA_API_TOKEN trong shell của bạn từ tài khoản Nstdata của bạn, sau đó chạy yêu cầu khởi động nhanh đã được tài liệu hóa. Tài liệu công khai gán một số tuyến đường đồng bộ và bất đồng bộ khác không nhất quán; so sánh yêu cầu được tạo ra trong Playground của tài khoản bạn trước khi sử dụng trong sản xuất.
curl --output crawl-response.json --request POST "https://api.nstdata.io/api/v1/crawl/scrape/submit-sync" \ --header "x-api-key: ${NSTDATA_API_TOKEN}" \ --header "Content-Type: application/json" \ --data '{"url":"https://example.com/table","formats":["html","screenshot"]}'
Phản hồi được lưu vào crawl-response.json. Kiểm tra các trường lồng nhau data.success, data.status, và data.data.metadata.statusCode trước khi sử dụng bất kỳ nội dung nào được trả về.
Bước 3: Kiểm tra bảng có tồn tại
Trước khi xuất, yêu cầu một tác vụ trang thành công và kiểm tra xem tiêu đề hoặc tiêu đề dự kiến có xuất hiện hay không. Đừng biến một trang trống thành một CSV trống trông có vẻ thành công.
Phương Pháp 3: Chuẩn Hóa Các Ô Thành Các Bản Ghi
Tốt nhất sau khi việc lấy HTML đã được xác nhận.
Bước 1: Chọn một bảng
Chọn theo một tiêu đề ổn định, tiêu đề gần đó, hoặc bộ chọn đã được xem xét thay vì chỉ lấy bảng đầu tiên một cách mù quáng.
Bước 2: Mở rộng nghĩa của tiêu đề và khoảng
Tính đến các hàng và cột đã được gộp; một bộ phân tích hình chữ nhật đơn giản là không đủ khi rowspan hoặc colspan thay đổi nghĩa của cột.
Bước 3: Xuất và xem xét
Viết CSV với mã hóa rõ ràng và thứ tự cột, hoặc JSON với các trường kiểu. So sánh một mẫu các hàng, đơn vị, và tổng số với nguồn đã được cung cấp.
Đối với một bảng HTML hình chữ nhật đơn giản, lưu lại html đã được trả về hoặc tải htmlRef xuống page.html. Cài đặt beautifulsoup4 (python3 -m pip install beautifulsoup4) và chạy kịch bản này từ cùng thư mục. Nó từ chối các ô đã được gộp để bạn không làm hỏng ý nghĩa cột một cách âm thầm:
from bs4 import BeautifulSoup import csv, json soup = BeautifulSoup(open("page.html", encoding="utf-8").read(), "html.parser") table = soup.select_one("table") if table is None: raise ValueError("Không tìm thấy bảng HTML; kiểm tra HTML đã được kết xuất hoặc ảnh chụp màn hình") rows = [] for tr in table.select("tr"): cells = tr.find_all(["th", "td"], recursive=False) if any(c.has_attr("rowspan") or c.has_attr("colspan") for c in cells): raise ValueError("Các ô đã được gộp cần một quy tắc chuẩn hóa bảng cụ thể") if cells: rows.append([c.get_text(" ", strip=True) for c in cells]) headers, *values = rows if not headers or any(len(row) != len(headers) for row in values): raise ValueError("Thiếu tiêu đề hoặc chiều rộng hàng không nhất quán") records = [dict(zip(headers, row)) for row in values] with open("table.csv", "w", newline="", encoding="utf-8") as f: writer = csv.DictWriter(f, fieldnames=headers) writer.writeheader() writer.writerows(records) open("table.json", "w", encoding="utf-8").write(json.dumps(records, ensure_ascii=False, indent=2)) print(f"Xuất {len(records)} hàng")
Kiểm tra hàng đầu tiên và hàng cuối cùng đã xuất, đơn vị và chú thích so với trang. Bộ phân tích này xử lý một <table> thực sự với một hàng tiêu đề; một lưới div, tiêu đề lồng hoặc bảng phân trang cần một quy tắc cụ thể theo nguồn.
Làm Thế Nào Bạn Xác Minh Đầu Ra?
Một xuất CSV hoặc JSON hợp lệ giữ nguyên nhãn cột, đơn vị, số hàng và giá trị ô. Kiểm tra hàng đầu tiên, giữa và cuối so với trang hiển thị; so sánh tổng hoặc ID đã biết khi có sẵn. Tài liệu tham khảo bảng HTML của MDN giải thích cấu trúc ô và tiêu đề, bao gồm ô hợp nhất. Hướng dẫn Nstdata HTML-to-data hữu ích khi giai đoạn tiếp theo ánh xạ hàng vào các bản ghi kiểu.
Hướng dẫn Nstdata Markdown pipeline kết nối kiểm tra cấp trang này với một quy trình AI hoặc dữ liệu phía dưới.
Ghi lại URL nguồn, thời gian gửi, định dạng yêu cầu, tùy chọn không bí mật, ID tác vụ khi có mặt, trạng thái trang trả về, và lý do mỗi bản ghi vượt qua hoặc không vượt qua đánh giá. Kiểm tra nội dung cũng như bao bọc API. Nếu phản hồi chứa markdownRef, htmlRef, rawDataRef, screenshotRef, hoặc pdfRef, lấy token đó với GET /api/v1/crawl/storage/read?st={ref}.
Đối với quy trình này, tham khảo Tài liệu tham khảo bảng HTML MDN khi thực hiện bộ phân tích phía dưới hoặc kiểm tra chấp nhận theo định dạng cụ thể.
Khi truyền văn bản đã trích xuất cho một tác nhân, coi hướng dẫn trang như tài liệu nguồn không đáng tin cậy. Hướng dẫn của OWASP về tiêm prompt giải thích rủi ro. Giữ lại các URL nguồn để đầu ra AI có thể được kiểm tra.
Tại Sao Xuất Bảng Có Thể Có Các Cột Sai?
Việc thu thập bảng trên trang web có thể thất bại vì trang sử dụng lưới div hoặc dữ liệu được tải sau khi render ban đầu. Sử dụng bảng triệu chứng để xác định lớp thất bại trước khi thay đổi giới hạn hoặc thử lại.
| Triệu chứng | Nguyên nhân có thể | Hành động tiếp theo |
|---|
| Không có <table> trong HTML | Trang sử dụng lưới div hoặc dữ liệu được tải sau khi render ban đầu. | Kiểm tra ảnh chụp màn hình và DOM; chờ lưới hoặc sử dụng bộ chọn cụ thể theo mẫu. |
| Cột dịch chuyển sau khi xuất | Ô hợp nhất hoặc nhiều hàng tiêu đề đã bị phẳng. | Mở rộng các khoảng và ánh xạ rõ ràng thứ bậc tiêu đề. |
| Định dạng số thay đổi | Địa phương, tiền tệ, hoặc đơn vị đã được suy luận không đúng. | Giữ nguyên văn bản gốc và chuẩn hóa theo quy tắc địa phương và đơn vị đã khai báo. |
Tài liệu của Nstdata liệt kê các lỗi mức tác vụ như access_denied, timeout, parse_error, và internal_error. Một HTTP 200 bên ngoài vẫn có thể đi kèm với một tác vụ thất bại. Kiểm tra success, status, errorCode, và errorMessage bên trong phản hồi khi có mặt. Chỉ thử lại các lỗi tạm thời trên các trang bạn có thể truy cập.
Phương Pháp Nào Là Phù Hợp Nhất?
Sử dụng Playground để kiểm tra xem bảng có tồn tại không, API để nhận HTML đã render của nó, và một bộ phân tích cụ thể cho bảng để xuất CSV hoặc JSON. Từ chối các ô hợp nhất cho đến khi bạn có một quy tắc chuẩn hóa rõ ràng. Tổng quan Nstdata site-crawling cung cấp thêm chi tiết về lộ trình trang web.
Bạn Nên Làm Gì Sau Lần Chạy Thành Công Đầu Tiên?
Lưu cấu hình đã phê duyệt và một bản ghi đầu ra có nguồn hỗ trợ, sau đó lặp lại trên một tập hợp nhỏ các mẫu trang khác nhau. Tăng phạm vi chỉ sau khi những bản ghi đó vượt qua các kiểm tra chấp nhận tương tự.
Câu Hỏi Thường Gặp: Bạn Nên Biết Gì Thêm?
Q: Có phải Crawl xuất CSV trực tiếp không?
Tài liệu Crawl hiển thị không thiết lập chế độ đầu ra CSV. Lấy dữ liệu HTML hoặc trang, sau đó xuất các hàng đã được xem xét trong ứng dụng của bạn.
Q: Tôi có thể tự động phân tích các bảng có ô hợp nhất không?
Một thư viện có thể mở rộng một số khoảng, nhưng bạn vẫn cần xác minh ý nghĩa tiêu đề và sự căn chỉnh hàng.
Q: Thì sao nếu bảng được xây dựng bằng divs?
Kiểm tra DOM đã render và viết một bộ phân tích cho cấu trúc thực tế của lưới đó; một bộ phân tích bảng HTML có thể không tìm thấy gì.
Q: Việc thu thập bảng trên trang web có cần cấu hình proxy riêng biệt với Nstdata Crawl không? Một yêu cầu Crawl được quản lý tiêu chuẩn không yêu cầu các trường riêng biệt cho Host, Port, Tên người dùng, Mật khẩu hoặc Giao thức. Xác nhận bất kỳ lựa chọn proxy tùy chọn nào và các khoản phí sử dụng liên quan trong tài khoản của bạn.
Q: HTTP 200 có chứng minh rằng kết quả scraping bảng web là có thể sử dụng không?
Không. Kiểm tra kết quả nhiệm vụ lồng ghép, trạng thái trang, các trường mong đợi và độ trung thực của nội dung trước khi sử dụng nó trong một quy trình làm việc với AI hoặc dữ liệu.





