2016-06-21 2 views
0

Python의 urlib 모듈에있는 robotparser을 사용하여 웹 페이지를 다운로드 할 수 있는지 확인합니다. 그러나 내가 액세스하는 한 사이트는 기본 user-agent를 통해 robot.txt 파일에 액세스 할 때 403 오류를 반환하지만 예를 들어 올바른 응답을 반환합니다. 내 사용자 에이전트 문자열로 요청을 통해 다운로드되었습니다. (이 사이트는 요청으로 액세스 할 때 403을 제공하여 기본 사용자 에이전트를 패키지화합니다.이 태그는 robot.txt 파일에 추가하지 않고 일반/일반 사용자 에이전트 문자열을 차단하고 있음을 나타냅니다.Python에서 robotparser와 함께 사용되는 사용자 에이전트 변경

어쨌든 rootparser 모듈에서 사용자 에이전트를 변경할 수 있습니까? 또는 별도로 다운로드 한 robot.txt 파일을로드 하시겠습니까?

답변

1

RobotFileParser를 사용하여 사용자 에이전트와 robots.txt를 가져 오기 할 수있는 옵션이 없습니다, 그러나 당신은 parse() 방법에 문자열 배열을 스스로를 가져오고 경로 수 있습니다

from urllib.robotparser import RobotFileParser 
import urllib.request 

rp = RobotFileParser() 


with urllib.request.urlopen(urllib.request.Request('http://stackoverflow.com/robots.txt', 
                headers={'User-Agent': 'Python'})) as response: 
    rp.parse(response.read().decode("utf-8").splitlines()) 

print(rp.can_fetch("*", "http://stackoverflow.com/posts/")) 
관련 문제