Computer >> Máy Tính >  >> Lập trình >> Python

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

Chủ sở hữu trang web sử dụng tệp /robots.txt để cung cấp hướng dẫn về trang web của họ cho rô bốt web; đây được gọi là Giao thức loại trừ rô bốt. Tệp này là một hệ thống kiểm soát truy cập dựa trên văn bản đơn giản dành cho các chương trình máy tính tự động truy cập tài nguyên web. Các chương trình như vậy được gọi là trình thu thập thông tin, trình thu thập thông tin, v.v. Tệp chỉ định mã định danh tác nhân người dùng, theo sau là danh sách các URL mà tác nhân không thể truy cập.

Ví dụ

#robots.txt
Sitemap: https://example.com/sitemap.xml
User-agent: *
Disallow: /admin/
Disallow: /downloads/
Disallow: /media/
Disallow: /static/

Tệp này thường được đặt trong thư mục cấp cao nhất của máy chủ web của bạn.

Mô-đun urllib.robotparser của Python cung cấp lớp RobotFileParser. Nó 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 một URL trên trang web đã xuất bản tệp robots.txt hay không.

Phương thức sau được định nghĩa trong lớp RobotFileParser

set_url (url)

Phương pháp này đặt URL tham chiếu đến tệp robots.txt.

read ()

Phương thức này đọc URL robots.txt và cung cấp nó cho trình phân tích cú pháp.

phân tích cú pháp ()

Phương thức này phân tích cú pháp đối số dòng.

can_fetch ()

Phương thức này trả về True nếu useragent có thể tìm nạp url theo các quy tắc có trong robots.txt.

mtime ()

Phương thức này trả về thời gian tệp robots.txt được tìm nạp lần cuối.

được sửa đổi ()

Phương pháp này đặt thời gian robots.txt được tìm nạp lần cuối.

crawl_delay ()

Phương thức này trả về giá trị của tham số độ trễ thu thập thông tin robots.txt cho phương thức sử dụng được đề cập.

request_rate ()

Phương thức này trả về nội dung của tham số Tốc độ yêu cầu dưới dạng một tuple RequestRate được đặt tên (yêu cầu, giây).

Ví dụ

from urllib import parse
from urllib import robotparser
AGENT_NAME = 'PyMOTW'
URL_BASE = 'https://example.com/'
parser = robotparser.RobotFileParser()
parser.set_url(parse.urljoin(URL_BASE, 'robots.txt'))
parser.read()