Robots.txt cho Web Scraping: Hướng Dẫn Thực Tiễn Tuân Thủ
TL;DR
robots.txt truyền đạt sở thích truy cập của trình thu thập cho một nguồn gốc; một đường dẫn được phép không cấp giấy phép hay quyền truy cập đến dữ liệu riêng tư.
Khớp mã thông báo sản phẩm đã công bố của trình thu thập và đường dẫn URL chính xác bằng cách sử dụng một trình phân tích mà bạn đã thử nghiệm.
Đối xử với việc lấy robots không thành công, một quyết định chính sách không khả dụng và một lỗi trang đích như những trạng thái hoạt động riêng biệt.
Crawl-delay là một phần mở rộng, không phải là một chỉ thị được chuẩn hóa bởi Giao thức Loại trừ Robots.
Kiểm tra chính sách trước khi đưa công việc vào hàng đợi, sau đó áp dụng các giới hạn độc lập về trang, độ sâu, đồng thời và giữ lại.
Nstdata Crawl có thể cung cấp bộ sưu tập được quản lý và các đầu ra sẵn sàng cho LLM sau khi ứng dụng của bạn đã thiết lập phạm vi được phép.
robots.txt có ý nghĩa gì đối với một dự án Web Scraping?
Một tệp robots.txt cho các trình thu thập hợp tác biết các đường dẫn URL mà một nhà điều hành trang web muốn họ truy cập. Tệp này thuộc về gốc của một nguồn, chẳng hạn như đường dẫn robots.txt trên cùng một chế độ và máy chủ như mục tiêu. Một chính sách cho một máy chủ không nên được lặp lại một cách im lặng cho một máy chủ khác. Hướng dẫn này cho web scraping coi tệp này như một đầu vào cho chính sách thu thập của bạn, với một quyết định rõ ràng trước khi một URL vào hàng đợi.
Giao thức Loại trừ Robots tuyên bố rằng những quy tắc này không phải là một hình thức ủy quyền truy cập. Một chỉ thị Cho phép không giải quyết bản quyền, hợp đồng, quyền riêng tư hoặc tái sử dụng được phép. Ngược lại, robots.txt không phải là một nơi an toàn để ẩn giấu các đường dẫn bảo mật: các tài nguyên riêng tư cần có các kiểm soát truy cập thực sự.
Sự phân biệt này vẫn còn liên quan khi bạn sử dụng Nstdata Crawl. Việc chuyển giao việc lấy dữ liệu đến một API được quản lý thay đổi ai điều hành trình duyệt và hạ tầng mạng. Nhóm của bạn vẫn phải quyết định những nguồn, đường dẫn, trường và cách sử dụng nào được phê duyệt. Giữ quyết định đó tách biệt khỏi việc dịch vụ có thể kỹ thuật thu thập một trang hay không.
Trải nghiệm Nstproxy Crawl - Bắt Đầu Dùng Thử Miễn Phí Hôm Nay
Những quy tắc nào bạn nên hiểu trước khi bắt đầu?
Hiểu các nhóm User-agent, quy tắc Cho phép và Không cho phép, và sự khác biệt giữa khớp chuẩn hóa và các phần mở rộng nhà cung cấp trước khi thực hiện kiểm tra chính sách.
Mục
Ý nghĩa thực tiễn
Hệ quả hoạt động
User-agent
Mã thông báo sản phẩm của trình thu thập mà một nhóm áp dụng
Giữ bản sắc đã công bố nhất quán với kiểm tra chính sách
Không cho phép
Các đường dẫn mà nhóm không nên thu thập
Loại trừ các URL khớp trước khi thu thập
Cho phép
Các đường dẫn mà nhóm có thể thu thập mặc dù có hạn chế rộng hơn
Áp dụng các quy tắc ưu tiên được tài liệu hóa của trình phân tích
Ký tự đại diện và neo kết thúc
Cú pháp khớp được định nghĩa bởi giao thức
Kiểm tra các URL mã hóa đại diện và chuỗi truy vấn
Crawl-delay
Phần mở rộng phổ biến ngoài RFC 9309
Kiểm tra hỗ trợ trong trình phân tích đã chọn và áp dụng bộ lập lịch của riêng bạn
Sitemap
Gợi ý khám phá, không phải là sự cho phép
Đánh giá từng URL được phát hiện so với phạm vi và chính sách
Giao thức giải quyết các khớp đường dẫn chồng chéo theo độ cụ thể, bao gồm cách xử lý các khớp Cho phép và Không cho phép tương đương. Đừng thực hiện thuật toán đầy đủ bằng cách tìm kiếm một chuỗi con hoặc lấy dòng nào xuất hiện trước. Mã hóa, lựa chọn nhóm và quy tắc khớp làm cho lối tắt đó không đáng tin cậy.
Hướng dẫn diễn giải robots.txt của Google tài liệu hóa hành vi của Google. Sử dụng nó để hiểu quy trình đặc trưng của Google, bao gồm các chỉ thị không được hỗ trợ; đừng giả định rằng một trình thu thập khác tái tạo tất cả hành vi của Google. Tương tự, thẻ meta robots kiểm soát các hành vi liên quan đến lập chỉ mục khác và không thay thế kiểm tra quyền truy cập thu thập.
Bạn cần gì trước khi kiểm tra một trang web?
Chuẩn bị một nguồn gốc đã được phê duyệt, mã thông báo sản phẩm của trình thu thập, URL ứng viên, một trình phân tích và một chính sách cho các tệp robots không khả dụng trước khi thực hiện các yêu cầu trang đích. Chính sách này nên chỉ định một chủ sở hữu có thể giải quyết sự không chắc chắn thay vì để mỗi công nhân tự sáng tạo.
Đối với phần trình bày Python, cài đặt một môi trường chạy Python được hỗ trợ và lưu lại kịch bản dưới đây với tên robots_probe.py; nó sử dụng thư viện tiêu chuẩn. Kịch bản chỉ tải xuống tệp robots công khai của Google và báo cáo hai quyết định chính sách. Nó không yêu cầu trang nào đã được kiểm tra. Yêu cầu truy cập mạng và một kho lưu trữ tin cậy TLS hoạt động là cần thiết; không cần tài khoản Nstdata cho phương pháp này.
Đối với một bản kê sản phẩm, ghi lại nguồn gốc, URL ứng viên, danh tính trình thu thập đã công bố, thời gian lấy chính sách, băm nội dung chính sách, phiên bản trình phân tích, quyết định và lý do quyết định. Giữ những trường đó bên cạnh tồn kho nguồn cho thu thập trang web. Đừng lưu các tiêu đề xác thực trong bản kê này.
Làm thế nào để bạn kiểm tra robots.txt trước khi thu thập các trang?
Kiểm tra robots.txt thủ công cho một đánh giá nhỏ, sử dụng một phân tích viên đã được kiểm tra cho một bản kê URL, hoặc kích hoạt việc tuân thủ ở cấp khung cho một trình thu thập thông tin. Những phương pháp này có thể bổ sung lẫn nhau; không phương pháp nào làm cho một bộ sưu tập không được ủy quyền trở nên chấp nhận được.
Phương pháp 1: Đánh giá một phạm vi nhỏ thủ công
Bước 1: Lấy tệp robots của nguồn gốc
Mở vị trí /robots.txt của nguồn gốc và ghi lại phản hồi cũng như thời gian lấy. Sử dụng tệp chính sách trên nguồn gốc liên quan thay vì một miền cha không liên quan.
Bước 2: Xác định nhóm trình thu thập thông tin áp dụng
Tìm nhóm phù hợp với mã sản phẩm trình thu thập thông tin đã khai báo của bạn và xem xét các quy tắc đường dẫn của nó. Nếu sự giải thích không chắc chắn, giữ URL bên ngoài hàng đợi được chấp thuận cho đến khi sự không chắc chắn được giải quyết.
Bước 3: Ghi lại quyết định cho các URL đại diện
Đánh giá một trang nhìn có vẻ được phép, một đường dẫn bị loại trừ, một biến thể chuỗi truy vấn, và bất kỳ đích đến nào được chuyển hướng. Lưu lý do với bản kê của bạn. Một đánh giá thủ công là hữu ích cho một thử nghiệm, nhưng trở nên khó duy trì khi các nguồn gốc và chính sách thay đổi thường xuyên.
Phương pháp 2: Thêm kiểm tra trước chuyến bay Python
Bước 1: Lưu kịch bản kiểm tra chính sách
Mẫu sau sử dụng urllib.robotparser, mà các phương pháp được tài liệu hóa của nó cung cấp các kiểm tra như can_fetch. Hành vi của phân tích viên là một phần của hợp đồng triển khai: thử nghiệm nó với các chỉ thị mà các nguồn của bạn sử dụng trước khi coi nó là một giải pháp tuân thủ RFC hoàn chỉnh.
from urllib.request import Request, urlopen
from urllib.robotparser import RobotFileParser
robots_url ="https://www.google.com/robots.txt"request = Request(robots_url, headers={"User-Agent":"PolicyCheckDemo/1.0"})with urlopen(request, timeout=20)as response:if response.status !=200:raise RuntimeError("Việc lấy robots yêu cầu đánh giá thủ công") data = response.read(512_001)iflen(data)>512_000:raise RuntimeError("Tệp robots vượt quá giới hạn của bản demo này")parser = RobotFileParser(robots_url)parser.parse(data.decode("utf-8").splitlines())for path in["/search","/"]: target ="https://www.google.com"+ path
print(path, parser.can_fetch("PolicyCheckDemo", target))
Bước 2: Thực thi kịch bản
Chạy python robots_probe.py. Tệp công khai đã được kiểm tra từ chối cả /search và / cho danh tính thử nghiệm. Đầu ra là một đánh giá chính sách tại thời điểm lấy, không phải bằng chứng rằng một trang đích đã được thu thập hoặc rằng một dự án có quyền tái sử dụng.
Bước 3: Áp dụng quyết định trước khi đưa vào hàng đợi
Trong ứng dụng của bạn, chỉ chấp nhận các URL được phê duyệt mà quyết định chính sách vượt qua. Chuyển một ngoại lệ, một tệp robots quá lớn, một chuyển hướng yêu cầu đánh giá, hoặc một quyết định không rõ ràng vào hàng đợi đánh giá. Chính sách ứng dụng có chủ đích bảo thủ này khác với các quy tắc của giao thức cho các kết quả HTTP và mạng cụ thể.
Phương pháp 3: Thi hành quy tắc trong khung trình thu thập thông tin
Bước 1: Kích hoạt cài đặt khung
Đối với Scrapy, đặt ROBOTSTXT_OBEY = True trong cài đặt dự án. Xác nhận các cài đặt hiệu quả trong dự án đang chạy thay vì giả định rằng một mẫu hoặc triển khai đã thừa hưởng giá trị mong muốn. Cài đặt robot của Scrapy ghi lại công tắc và cấu hình phân tích viên liên quan.
Bước 2: Đặt ranh giới lập lịch rõ ràng
Cấu hình thời gian tải xuống có chủ đích và giới hạn đồng thời cho khối lượng công việc được phê duyệt. Tôn trọng các giới hạn cụ thể cho nguồn hỗ trợ, và tránh giả định rằng một Crawl-delay bị thiếu có nghĩa là khối lượng yêu cầu không giới hạn là phù hợp.
Bước 3: Kiểm tra một ứng viên bị loại trừ
Sử dụng một nguồn thử nghiệm có kiểm soát để xác minh rằng một ứng viên bị loại trừ không bao giờ đến giai đoạn tải xuống mục tiêu. Một thông báo nhật ký cho biết rằng middleware đã được tải là bằng chứng yếu hơn so với một sự loại trừ đã quan sát. Các cài đặt khung không loại bỏ sự cần thiết phải kiểm tra các chuyển hướng, yêu cầu ngoại tuyến và yêu cầu do ứng dụng tạo có thể theo các đường dẫn mã khác nhau.
Nstdata có thể phù hợp với một quy trình làm việc kiểm soát chính sách như thế nào?
Nstdata Crawl phù hợp sau khi dịch vụ chính sách của bạn đã phê duyệt phạm vi thu thập. Nstdata Crawl là một API Web Crawling cho dữ liệu sẵn sàng cho LLM có thể chuyển đổi các phần trang web đã được phê duyệt thành các đầu ra trang tái sử dụng. Khám phá trang web và thu thập theo đệ quy giảm nhu cầu duy trì biên giới liên kết của riêng bạn. Việc kết xuất JavaScript hỗ trợ các trang mà nội dung hữu ích của chúng đến sau HTML ban đầu. Ứng dụng vẫn chịu trách nhiệm về việc phê duyệt phạm vi, chấp nhận đầu ra và tái sử dụng ở hạ nguồn.
Khám phá có giới hạn: Đặt giới hạn trang và độ sâu và xác minh các URL đã phát hiện với hàng tồn kho đã được phê duyệt của bạn. Không giả định rằng một bộ lọc đơn thuần chứng minh việc thực thi mọi chính sách nguồn.
Đầu ra cho các kiểm tra khác nhau: Markdown phục vụ RAG và các đại lý, HTML hỗ trợ phân tích, liên kết hỗ trợ khám phá, và PDF hoặc ảnh chụp màn hình hỗ trợ xem xét. Dữ liệu thô cung cấp byte chẩn đoán; một bao bọc phản hồi JSON không đảm bảo tính chính xác của hồ sơ kinh doanh.
Định tuyến proxy tích hợp sẵn: Các cuộc gọi quản lý tiêu chuẩn có thể sử dụng các proxy tích hợp sẵn của Nstdata mà không cần các trường Host, Port, Username, Password, hoặc Protocol riêng biệt. Định tuyến proxy không thay đổi quyền hạn, và lưu lượng proxy có một kích thước tách biệt trong mô hình thanh toán Crawl.
Để kết nối quy trình làm việc, lấy khóa API thông qua Dashboard → Crawl Playground, cài đặt nstdata-ai-crawl dưới Python 3.10 hoặc phiên bản mới hơn, và thiết lập NSTDATA_API_TOKEN, APPROVED_PAGE_URL, và tùy chọn EXPECTED_TEXT. Ví dụ phụ thuộc vào chứng nhận sau yêu cầu khóa của riêng bạn và một mục tiêu đã được phê duyệt; đó không phải là kết quả thu thập được xác thực từ hướng dẫn này.
[Ảnh chụp màn hình: Nstdata Crawl Playground với mục tiêu đã được phê duyệt và định dạng đã yêu cầu; giữ khóa API trong bí mật.]
import os
from pathlib import Path
from nstdata_ai_crawl import NstDataClient, ScrapeRequestDto
with NstDataClient(os.environ["NSTDATA_API_TOKEN"], max_response_bytes=1_048_576)as client: result = client.submit_scrape_task_sync(ScrapeRequestDto( url=os.environ["APPROVED_PAGE_URL"], formats=["markdown"], onlyMainContent=True, timeout=60000,))if result.success isnotTrueor result.status !="completed":raise RuntimeError("Thu thập không hoàn tất thành công")if result.data isNoneor result.data.truncated isTrue:raise RuntimeError("Nội dung thiếu hoặc một phần cần được xem xét") text = result.data.get_markdown()ifnot text ornot text.strip():raise RuntimeError("Không có Markdown khả dụng được trả về") expected = os.environ.get("EXPECTED_TEXT")if expected and expected notin text:raise RuntimeError("Nội dung nguồn yêu cầu bị thiếu") Path("accepted-page.md").write_text(text, encoding="utf-8")print("Đã lưu accepted-page.md; xác minh sự thật trước khi đưa vào")
Bắt đầu với một trang đã được phê duyệt và kiểm tra Markdown đã lưu so với nguồn. Đối với một lần thu thập trang web tiếp theo, thiết lập maxPages, maxDepth, quy tắc bao gồm/loại trừ và điều kiện dừng có thể xem lại. Xem quản lý tác vụ theo lô trước khi mở rộng công việc. Không tuyên bố rằng việc gửi một URL mục nhập được phép sẽ tự động cho phép mọi trang phát hiện dưới nó.
Tại sao một kiểm tra chính sách lại có thể đưa ra quyết định sai lầm?
Một kiểm tra chính sách có thể đưa ra quyết định sai lầm khi việc thực hiện sử dụng nguồn gốc sai, danh tính thu thập, hành vi phân tích hoặc ảnh chụp chính sách. Chẩn đoán giai đoạn chính sách độc lập với việc truy xuất mục tiêu.
Triệu chứng
Nguyên nhân có thể
Hành động khắc phục
Được phép trong xem xét, bị từ chối trong thu thập
Mã sản phẩm hoặc bộ phân tích khác nhau
So sánh danh tính chính xác và bộ phân tích hiệu quả
Hoạt động cho một máy chủ nhưng thất bại sau chuyển hướng
Chính sách được sử dụng lại giữa các nguồn gốc
Xem xét nguồn gốc điểm đến một cách riêng biệt
Quyết định thay đổi mà không có triển khai mã
Chính sách nguồn đã thay đổi
So sánh băm chính sách và thời gian truy xuất
Công nhân tiến hành sau khi thất bại mạng
Ngoại lệ được chuyển đổi thành quyết định cho phép
Bảo tồn trạng thái không xác định/xem xét một cách rõ ràng
Công việc hoàn tất bao gồm các URL bị loại trừ
Việc thực thi phạm vi xảy ra quá muộn
Kiểm tra đường đi lên hàng đợi và hàng tồn kho URL đã trả về
Giữ dữ liệu đã được chấp nhận trước đó cho đến khi dữ liệu thay thế vượt qua việc xem xét. Nếu một nguồn thay đổi chính sách, hãy tạm dừng công việc bị ảnh hưởng và giải quyết phạm vi mới trước khi làm mới tập dữ liệu. Hướng dẫn thử lại sản xuất rất hữu ích cho các lỗi truy xuất tạm thời, nhưng các lần thử lại không nên biến một sự từ chối chính sách có mục đích thành các yêu cầu mục tiêu lặp lại.
Bạn nên triển khai điều gì đầu tiên?
Triển khai một bản kê chính sách và kiểm tra chấp nhận URL đã được thử nghiệm trước khi xây dựng một trình thu thập lớn. Xác minh một tập hợp nhỏ các trường hợp được phép, bị từ chối, chuyển hướng và không có chính sách, sau đó chỉ kết nối công việc đã được phê duyệt với lớp thu thập. Các đầu ra HTML và hình ảnh thay thế của Nstdata có thể giúp chẩn đoán chất lượng thu thập khi ranh giới chính sách được thiết lập.
Q: robots.txt có cho phép thu thập dữ liệu từ một trang web không?
Không. robots.txt truyền đạt sở thích của trình thu thập; sự ủy quyền, điều khoản, quyền riêng tư, bản quyền và việc sử dụng lại vẫn cần được xem xét riêng biệt.
Q: Crawl-delay có phải là một phần của RFC 9309 không?
Không. Crawl-delay là một phần mở rộng, và sự hỗ trợ phụ thuộc vào trình thu thập hoặc phân tích. Hãy giữ các giới hạn lịch trình của bạn rõ ràng.
Q: Sơ đồ trang có thay thế các quy tắc Disallow không?
Không. Sơ đồ trang gợi ý các URL để khám phá; mỗi ứng viên vẫn cần đánh giá phạm vi và chính sách.
Q: Có nên cho phép thu thập một cách im lặng khi có lỗi mạng không?
Không. Giữ lỗi lại như một trạng thái riêng biệt và áp dụng chính sách đã được tài liệu hóa của bạn. Việc trình diễn dừng lại để xem xét thay vì tạo ra một quyết định cho phép.
Q: Có phải một proxy thay đổi quyết định chính sách không?
Không. Một lộ trình mạng khác không tạo ra quyền hoặc loại bỏ nghĩa vụ xem xét nguồn của bạn.
Q: Có thể sử dụng một trình phân tích Python mà không cần một khuôn khổ trình thu thập không?
Có. Một kiểm tra chính sách trước khi thực hiện có thể chạy trước bất kỳ bộ thu thập nào, với điều kiện hành vi và tích hợp tương ứng của nó được kiểm tra cho khối lượng công việc của bạn.
Ivy Lin
Nov. 12th 2026
Thu thập toàn bộ trang web chỉ với một yêu cầu API
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.
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