urllib.robotparser --- Trình phân tích cú pháp cho robots.txt

Source code: Lib/urllib/robotparser.py


Mô-đun này cung cấp một lớp duy nhất, RobotFileParser, trả lời các câu hỏi về việc liệu một tác nhân người dùng cụ thể có thể tìm nạp URL trên trang web xuất bản tệp robots.txt hay không. Để biết thêm chi tiết về cấu trúc của tệp robots.txt, hãy xem http://www.robotstxt.org/orig.html.

class urllib.robotparser.RobotFileParser(url='')

Lớp này cung cấp các phương thức để đọc, phân tích cú pháp và trả lời các câu hỏi về tệp robots.txt tại url.

set_url(url)

Đặt URL tham chiếu đến tệp robots.txt.

read()

Đọc robots.txt URL và đưa nó vào trình phân tích cú pháp.

parse(lines)

Phân tích đối số dòng.

can_fetch(useragent, url)

Trả về True nếu useragent được phép tìm nạp url theo các quy tắc có trong tệp robots.txt được phân tích cú pháp.

mtime()

Trả về thời điểm tệp robots.txt được tìm nạp lần cuối. Điều này rất hữu ích cho các web nhện chạy lâu cần kiểm tra định kỳ các tệp robots.txt mới.

modified()

Đặt thời gian tệp robots.txt được tìm nạp lần cuối đến thời điểm hiện tại.

crawl_delay(useragent)

Trả về giá trị của tham số Crawl-delay từ robots.txt cho useragent được đề cập. Nếu không có tham số như vậy hoặc nó không áp dụng cho useragent được chỉ định hoặc mục nhập robots.txt cho tham số này có cú pháp không hợp lệ, hãy trả về None.

Added in version 3.6.

request_rate(useragent)

Trả về nội dung của tham số Request-rate từ robots.txt dưới dạng named tuple RequestRate(requests, seconds). Nếu không có tham số như vậy hoặc nó không áp dụng cho useragent được chỉ định hoặc mục nhập robots.txt cho tham số này có cú pháp không hợp lệ, hãy trả về None.

Added in version 3.6.

site_maps()

Trả về nội dung của tham số Sitemap từ robots.txt ở dạng list(). Nếu không có tham số nào như vậy hoặc mục nhập robots.txt cho tham số này có cú pháp không hợp lệ, hãy trả về None.

Added in version 3.8.

Ví dụ sau đây minh họa cách sử dụng cơ bản của lớp RobotFileParser:

>>> nhập urllib.robotparser
>>> rp = urllib.robotparser.RobotFileParser()
>>> rp.set_url("http://www.pythontest.net/robots.txt")
>>> rp.read()
>>> rrate = rp.request_rate("*")
>>> rrate.requests
1
>>> rrate.seconds
1
>>> rp.crawl_delay("*")
6
>>> rp.can_fetch("*", "http://www.pythontest.net/")
đúng
>>> rp.can_fetch("*", "http://www.pythontest.net/no-robots-here/")
sai