Cách thu thập và phân tích Sitemaps để thu thập toàn bộ trang web
TL;DR
Một sơ đồ trang web là đầu vào khám phá, không phải là bằng chứng rằng mỗi trang được liệt kê đều có thể truy cập hoặc đáng để thu thập.
Một chỉ mục sơ đồ trang web trỏ tới các sơ đồ trang khác; một tập hợp URL liệt kê các trang ứng cử viên.
Việc bao gồm sơ đồ trang web không xác lập quyền truy cập, độ mới, hoặc độ bao phủ đầy đủ của trang web.
So sánh một bản kê sơ đồ trang web đã lọc với một kết quả Crawls đệ quy giới hạn để tìm khoảng trống.
Nstdata Crawl xử lý việc kết xuất JavaScript và định tuyến proxy trong các yêu cầu được quản lý; tài liệu của nó liệt kê sáu danh mục đầu ra: Markdown, HTML, dữ liệu thô, PDF, ảnh chụp màn hình, và liên kết.
Sơ đồ trang web là gì và tại sao cần phân tích nó?
Một sơ đồ trang web là một tài liệu XML liệt kê các URL trang, hoặc một chỉ mục liệt kê các tài liệu sơ đồ trang web khác. Phân tích nó cung cấp cho bạn các ứng cử viên cho một kế hoạch thu thập dữ liệu. Nó không chứng minh rằng mỗi URL là hiện tại, chính thống, được liên kết nội bộ, hoặc phù hợp cho việc sử dụng của bạn. Việc bao phủ toàn bộ trang web cũng có thể yêu cầu phát hiện liên kết vì một số trang không có trong sơ đồ. Kết hợp cả hai đầu vào theo máy chủ, đường dẫn, độ sâu và giới hạn trang.
Nstdata Crawl có thể biến một URL hoặc một tập hợp các trang liên kết đã giới hạn thành tài liệu cho một tác nhân AI, chỉ số RAG, hoặc quy trình 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ể: phát hiện các URL được ủy quyền từ sơ đồ trang web và biến một tập hợp đã được xem xét thành một lần thu thập trang web có giới hạn. Hướng dẫn thu thập toàn bộ trang web của Nstdata giải thích tùy chọn cấp độ trang web.
Bắt đầu với một trang web mà bạn sở hữu hoặc có thể thu thập. Kiểm tra /robots.txt để tìm các khai báo sơ đồ trang web và quy tắc truy cập, sau đó kiểm tra chỉ mục sơ đồ trang web hoặc tập hợp URL. Ghi lại máy chủ cho phép, tiền tố đường dẫn, loại tệp, ngôn ngữ, và số lượng trang tối đa. Loại trừ các đường dẫn tài khoản, giỏ hàng, tìm kiếm, lịch, và các truy vấn trùng lặp trừ khi cần thiết. Giữ một bản kê các URL ứng cử viên, đã chấp nhận, bị từ chối, và thực sự đã được thu thập.
Tài liệu API Crawls 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 thức:
Trường
Những gì cần cung cấp
url
Một URL trang hoặc trang web HTTPS được phép
formats
Đầu ra yêu cầu, chẳng hạn như ["markdown"] hoặc ["html","screenshot"]
onlyMainContent
true chỉ khi việc chọn nội dung chính phù hợp với công việc
maxDepth, maxPages
Giới hạn rõ ràng cho một công việc trên toàn trang web
includeUrls, excludeUrls
Mẫu URL giữ việc phát hiện trong phạm vi
timeout
Thời gian chờ cho một tác vụ trong 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ó các trường riêng biệt cho Host, Port, Username, Password, hoặc Protocol proxy. Kiểm tra trang báo giá Crawls hiện tại để biết giới hạn tài khoản và phí trước khi thực hiện một công việc lớn.
Xem xét chính sách và phạm vi truy cập của mục tiêu. Giao thức loại trừ Robot định nghĩa cách mà các trình thu thập dữ liệu đọc các quy tắc robot; 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 thu thập toàn bộ trang web của Nstdata là một tài liệu đi kèm để định nghĩa 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.
Cách hoạt động của chỉ mục sơ đồ trang web và tập hợp URL?
Một urlset chứa các mục <loc> của trang. Một sitemapindex chứa các mục <loc> của lập sơ đồ con có thể là tệp XML hoặc tệp nén. Nstdata Crawl có thể phát hiện các URL từ cấu trúc trang web và theo các liên kết nội bộ một cách đệ quy trong các quy tắc maxDepth, maxPages, bao gồm, và loại trừ đã cấu hình. Kết xuất JavaScript giúp trên các trang động, và định tuyến proxy được tích hợp trong dịch vụ được quản lý. API không loại bỏ nhu cầu xem xét các URL ứng cử viên và quyền thu thập.
Đối với một URL đã biết, một lần thu thập dữ liệu một trang thu được một kết quả. Đối với một khu vực trang web, POST /api/v1/crawl phát hiện các trang liên kết một cách đệ quy trong độ sâu, số lượng trang, và quy tắc URL được 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 danh mục đầu ra; trang sản phẩm cũng tiếp thị JSON, nhưng một lược đồ JSON chuyên dụng vẫn cần ánh xạ trường rõ ràng. Giữ mỗi bản ghi đã chấp nhận gắn liền với URL nguồn và siêu dữ liệu được trả về.
Test một trang web nặng JavaScript đại diện trước khi mở rộng quy mô. Trạng thái đã 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 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 các điều khiển kết xuất và chờ đợi được tài liệu.
Làm thế nào để bạn phân tích Sitemap và thu thập trang web?
Phân tích và lọc các ứng viên sitemap trước, sử dụng khám phá Crawl có giới hạn để tìm các trang liên kết, và duy trì một danh sách cho các kiểm tra phạm vi lặp lại. Một sitemap và một lần thu thập đệ quy trả lời các câu hỏi khám phá liên quan nhưng khác nhau.
Phương pháp 1: Kiểm tra sitemap trước khi thu thập
Tốt nhất cho một trang nhỏ hoặc một lần xem xét phát hiện.
Bước 1: Tìm các khai báo sitemap
Mở /robots.txt của trang web và tìm các dòng Sitemap:. Nếu không có khai báo nào, chỉ kiểm tra vị trí sitemap đã được tài liệu của trang; đừng giả định rằng mọi trang đều sử dụng /sitemap.xml.
Bước 2: Phân loại XML
Xác định xem phần gốc là sitemapindex hay urlset. Chỉ theo dõi các URL sitemap con trong máy chủ được phê duyệt và tránh việc thu thập đệ quy không có giới hạn. [Ảnh chụp màn hình: phần gốc XML và các mục <loc>.]
Sử dụng một bộ phân tích có giới hạn thay vì sao chép các giá trị <loc> bằng tay. Ví dụ thư viện chuẩn này chấp nhận một URL sitemap, theo tối đa ba cấp độ chỉ mục sitemap, giữ nguyên trên máy chủ gốc, và in các URL trang:
from urllib.request import urlopen
from urllib.parse import urlparse
from xml.etree import ElementTree as ET
import gzip, sys
start = sys.argv[1]host = urlparse(start).hostname
seen =set()defvisit(url, depth=0):if depth >3or url in seen or urlparse(url).hostname != host:return seen.add(url)with urlopen(url, timeout=20)as response: raw = response.read(10_000_001)iflen(raw)>10_000_000:raise ValueError("Sitemap vượt quá giới hạn kích thước xem xét")if url.endswith(".gz"): raw = gzip.decompress(raw) root = ET.fromstring(raw) ns ={"s":"http://www.sitemaps.org/schemas/sitemap/0.9"}if root.tag.endswith("sitemapindex"):for loc in root.findall("s:sitemap/s:loc", ns): visit(loc.text.strip(), depth +1)elif root.tag.endswith("urlset"):for loc in root.findall("s:url/s:loc", ns):if urlparse(loc.text.strip()).hostname == host:print(loc.text.strip())else:raise ValueError("Gốc sitemap không mong đợi")visit(start)
Lưu nó dưới dạng parse_sitemap.py và chạy python3 parse_sitemap.py https://example.com/sitemap.xml > urls.txt. Xem xét và loại bỏ trùng lặp trong urls.txt trước khi thu thập; kịch bản không cho phép thu thập các trang đã được liệt kê.
Bước 3: Xem xét các ứng viên
Chuẩn hóa và loại bỏ trùng lặp các URL, sau đó lọc theo máy chủ được phê duyệt, đường dẫn, ngôn ngữ và loại nội dung. Một URL được liệt kê là một ứng viên, không phải là một trang đã được chấp nhận.
Phương pháp 2: Sử dụng Nstdata Crawl cho khám phá có giới hạn
Tốt nhất khi việc phát hiện liên kết nên bổ sung cho sitemap.
Bước 1: Lưu trữ API key
Giữ NSTDATA_API_TOKEN ở phía máy chủ và gửi nó dưới dạng x-api-key.
Bước 2: Gửi một tác vụ có phạm vi
Sử dụng POST /api/v1/crawl với một URL bắt đầu, maxDepth, maxPages, các quy tắc bao gồm/loại trừ URL, và các định dạng yêu cầu. Ví dụ dưới đây theo hình dáng yêu cầu thu thập trang chính thứ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. Tài liệu công khai ghi nhãn một số đường dẫn đồng bộ và bất đồng bộ khác một cách không đồng nhất; so sánh yêu cầu được tạo ra trên 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"\--header"x-api-key: ${NSTDATA_API_TOKEN}"\--header"Content-Type: application/json"\--data'{"url":"https://example.com/docs/","formats":["markdown"],"maxDepth":2,"maxPages":10,"includeUrls":["*example.com/docs/*"],"excludeUrls":["*example.com/admin/*"],"ignoreQuery":true}'
Phản hồi sẽ được lưu vào crawl-response.json. Kiểm tra các trường data.success, data.status, và data.data.metadata.statusCode bên trong trước khi sử dụng bất kỳ nội dung nào được trả về.
Bước 3: So sánh độ phủ
Kiểm tra ID thu thập, truy xuất các trang, và so sánh các URL trả về với danh sách sitemap của bạn. Điều tra các trang có giá trị cao bị thiếu và các đường dẫn không mong đợi thay vì giả định rằng việc phát hiện đã hoàn tất.
Phương pháp 3: Duy trì một danh sách URL có thể lặp lại
Tốt nhất cho các cập nhật tài liệu hoặc danh mục định kỳ.
Bước 1: Chụp ảnh các ứng viên
Lưu URL chuẩn hóa, sitemap nguồn, và thời gian phát hiện cho mỗi ứng viên đã được phê duyệt.
Bước 2: Theo dõi kết quả thu thập
Ghi lại trạng thái đã lấy, băm nội dung, và lý do từ chối cho từng URL. Giữ các thay đổi sitemap tách biệt với các thay đổi nội dung.
Bước 3: Làm mới một cách chọn lọc
Thăm lại các trang đã thay đổi hoặc có giá trị cao theo chu kỳ cho phép bởi mục tiêu. Tránh thu thập lại các phần lớn không thay đổi chỉ vì thời gian đóng dấu của sitemap đã thay đổi.
Làm thế nào để bạn xác minh đầu ra?
Một bản khai thác âm thanh phân biệt các URL được liệt kê, các URL được phát hiện, các URL đã lấy và nội dung đã chấp nhận. Các tập hợp đó có thể khác nhau. Giao thức Giao thức Sitemaps định nghĩa các phần tử sitemapindex, urlset, và <loc>, trong khi Google Search Central lưu ý rằng một sitemap giúp khám phá mà không đảm bảo việc thu thập. Hướng dẫn Nstdata về việc tìm kiếm các trang web đề cập đến các phương pháp khám phá bổ sung.
Ghi lại URL nguồn, thời gian gửi, định dạng được yêu cầu, các tùy chọn không bí mật, ID tác vụ khi có, trạng thái trang đã trả về, và lý do mỗi bản ghi đã qua hoặc không qua kiểm tra. 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 Giao thức Sitemaps khi triển khai phân tích cú pháp hoặc kiểm tra chấp nhận cụ thể theo định dạng.
Khi truyền văn bản đã trích xuất tới một đại lý, coi hướng dẫn trang là tài liệu nguồn không đáng tin cậy. Hướng dẫn OWASP về việc tiêm lời nhắc giải thích về rủi ro. Giữ lại URL nguồn để đầu ra AI có thể được kiểm tra.
Việc thu thập dựa trên sitemap có thể thất bại vì tệp gốc là một chỉ mục sitemap. Sử dụng bảng triệu chứng để xác định lớp bị lỗi trước khi thay đổi giới hạn hoặc thử lại.
Triệu chứng
Nguyên nhân khả thi
Hành động tiếp theo
Chỉ có sitemap đầu tiên được phân tích
Tệp gốc là một chỉ mục sitemap.
Theo dõi các mục <loc> con với giới hạn độ sâu và máy chủ.
Nhiều URL được liệt kê không thành công
Sitemap đã lỗi thời hoặc quyền truy cập bị hạn chế.
Kiểm tra trạng thái cuối cùng và quy tắc mục tiêu; từ chối các ứng viên không thể truy cập.
Crawler bỏ lỡ các trang mong đợi
Độ sâu, giới hạn, quy tắc URL, hoặc các liên kết bị thiếu hạn chế việc khám phá.
So sánh bản khai với các URL đã trả về và điều chỉnh một ranh giới.
Tài liệu của Nstdata liệt kê các lỗi cấp 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ụ bị lỗi. Kiểm tra success, status, errorCode, và errorMessage trong phản hồi khi có. Chỉ thử lại những lỗi tạm thời trên các trang web mà bạn có thể truy cập.
Phương Pháp Nào Là Phù Hợp Nhất?
Phân tích sitemap cho một bản khai ứng viên, sử dụng Nstdata Crawl để khám phá các trang liên kết có giới hạn, và duy trì một bản khai khi cần làm mới phạm vi. So sánh các URL đã phát hiện và đã chấp nhận sau mỗi lần chạy. Tổng quan về Nstdata site-crawling cung cấp thêm chi tiết về lộ trình của 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 đã được phê duyệt và một bản ghi đầu ra được hỗ trợ bởi nguồn, 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ùng một kiểm tra chấp nhận.
Không. Các trang web có thể bỏ qua các trang, giữ lại các URL đã lỗi thời, hoặc liệt kê các URL bên ngoài phần bạn cần. So sánh với việc khám phá liên kết nội bộ.
Q: Nstdata Crawl có thể sử dụng một sitemap và theo dõi các liên kết không?
Trang sản phẩm của nó mô tả việc khám phá sitemap và liên kết; hãy giới hạn công việc với độ sâu, số lượng trang, và quy tắc URL.
Q: Một URL trong một sitemap có cho phép thu thập không?
Không. Xem xét các quy tắc của đối tượng mục tiêu và thẩm quyền của bạn để sử dụng nội dung trước khi thu thập.
Q: Việc thu thập dựa trên sitemap có cần cấu hình proxy riêng với Nstdata Crawl không?
Một yêu cầu Crawl quản lý tiêu chuẩn không cần các trường Proxy Host, Port, Username, Password, hoặc Protocol riêng biệt. Xác nhận bất kỳ tùy chọn chọn proxy tùy chỉnh nào và các khoản phí liên quan trong tài khoản của bạn.
H: Mã HTTP 200 có chứng minh rằng kết quả lập chỉ mục dựa trên sitemap là có thể sử dụng không?
Không. Kiểm tra kết quả tác 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 AI hoặc dữ liệu.
Hướng dẫn này cho thấy cách phát hiện các URL được ủy quyền từ các sitemap và biến một tập con đã được xem xét thành một cuộc thu thập dữ liệu trang web có giới hạn. Nó bao gồm các phương pháp thực tiễn, kiểm tra kết quả, và các giới hạn của việc thu thập dữ liệu được quản lý.
Kai Watanabe
Oct. 28th 2026
Thu thập toàn bộ trang web chỉ với một yêu cầu API
Tỷ lệ thành công 99,8% với kết xuất JavaScript
Nhận dữ liệu sạch, sẵn sàng cho LLM ở nhiều định dạng
Chuyển mọi trang web thành Markdown, HTML, JSON, liên kết, PDF và hơn thế nữa mà không cần quản lý hạ tầng thu thập dữ liệu.