Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

urllib.robotparser - Python의 robots.txt용 파서

<시간/>

웹 사이트 소유자는 /robots.txt 파일을 사용하여 웹 로봇에 사이트에 대한 지침을 제공합니다. 이것을 로봇 배제 프로토콜이라고 합니다. 이 파일은 웹 리소스에 자동으로 액세스하는 컴퓨터 프로그램에 대한 간단한 텍스트 기반 액세스 제어 시스템입니다. 이러한 프로그램을 스파이더, 크롤러 등이라고 합니다. 파일은 에이전트가 액세스할 수 없는 URL 목록이 뒤에 오는 사용자 에이전트 식별자를 지정합니다.

예를 들어

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

이 파일은 일반적으로 웹 서버의 최상위 디렉토리에 있습니다.

Python의 urllib.robotparser 모듈은 RobotFileParser 클래스를 제공합니다. 특정 사용자 에이전트가 robots.txt 파일을 게시한 웹 사이트의 URL을 가져올 수 있는지 여부에 대한 질문에 답합니다.

다음 메소드는 RobotFileParser 클래스에 정의되어 있습니다.

set_url(url)

이 메소드는 robots.txt 파일을 참조하는 URL을 설정합니다.

읽기()

이 메소드는 robots.txt URL을 읽고 이를 파서에 제공합니다.

파싱()

이 메서드는 lines 인수를 구문 분석합니다.

can_fetch()

이 메소드는 사용자 에이전트가 robots.txt에 포함된 규칙에 따라 URL을 가져올 수 있는 경우 True를 반환합니다.

mtime()

이 메소드는 robots.txt 파일을 마지막으로 가져온 시간을 반환합니다.

수정됨()

이 메소드는 robots.txt를 마지막으로 가져온 시간을 설정합니다.

crawl_delay()

이 메소드는 문제의 사용자 에이전트에 대한 크롤링 지연 매개변수 robots.txt의 값을 반환합니다.

요청 속도()

이 메서드는 Request-rate 매개변수의 내용을 명명된 튜플 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()