Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

urllib.robotparser - Parser สำหรับ robots.txt ใน Python


เจ้าของเว็บไซต์ใช้ไฟล์ /robots.txt เพื่อให้คำแนะนำเกี่ยวกับไซต์ของตนแก่โรบ็อตเว็บ สิ่งนี้เรียกว่า The Robots Exclusion Protocol ไฟล์นี้เป็นระบบควบคุมการเข้าใช้ข้อความอย่างง่ายสำหรับโปรแกรมคอมพิวเตอร์ที่เข้าถึงทรัพยากรบนเว็บโดยอัตโนมัติ โปรแกรมดังกล่าวเรียกว่าสไปเดอร์ โปรแกรมรวบรวมข้อมูล ฯลฯ ไฟล์ระบุตัวระบุตัวแทนผู้ใช้ตามด้วยรายการ URL ที่ตัวแทนอาจไม่สามารถเข้าถึงได้

ตัวอย่าง

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

ไฟล์นี้มักจะอยู่ในไดเร็กทอรีระดับบนสุดของเว็บเซิร์ฟเวอร์ของคุณ

โมดูล urllib.robotparser ของ Python มีคลาส RobotFileParser โดยจะตอบคำถามว่าตัวแทนผู้ใช้รายใดสามารถดึง URL บนเว็บไซต์ที่เผยแพร่ไฟล์ robots.txt ได้หรือไม่

วิธีการต่อไปนี้ถูกกำหนดในคลาส RobotFileParser

set_url(url)

เมธอดนี้ตั้งค่า URL ที่อ้างอิงถึงไฟล์ robots.txt

อ่าน()

เมธอดนี้จะอ่าน URL ของ robots.txt และฟีดไปยัง parser

แยกวิเคราะห์()

เมธอดนี้แยกวิเคราะห์อาร์กิวเมนต์เส้น

can_fetch()

เมธอดนี้คืนค่า True ถ้า useragent สามารถดึง url ตามกฎที่มีอยู่ใน robots.txt

mtime()

เมธอดนี้จะคืนค่าเวลาที่ดึงไฟล์ robots.txt ครั้งล่าสุด

modified()

เมธอดนี้กำหนดเวลาที่เรียก robots.txt ครั้งล่าสุด

crawl_delay()

เมธอดนี้คืนค่าของพารามิเตอร์ Crawl-delay robots.txt สำหรับ useragent ที่เป็นปัญหา

request_rate()

เมธอดนี้ส่งคืนเนื้อหาของพารามิเตอร์ Request-rate เป็น tuple RequestRate ที่มีชื่อ (requests, seconds)

ตัวอย่าง

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()