2016-06-21 2 views
0

Я использую robotparser из модуля urlib в Python, чтобы определить, можете ли скачать веб-страницы. Однако один доступ к объекту, который я получаю, возвращает ошибку 403, когда к файлу robot.txt обращается через пользовательский агент по умолчанию, но правильный ответ, если, например, загружается через запросы с помощью моей строки user-agent. (Сайт также предоставляет 403 при доступе с пользовательским агентом запросов пакетов по умолчанию, предполагая, что они просто блокируют общие/общие строки пользовательского агента, а не добавляют их в файл robot.txt).Изменение пользовательского агента, используемого с robotparser в Python

В любом случае, возможно ли изменить пользовательский агент в модуле rootparser? Или, альтернативно, загрузить файл robot.txt, загруженный отдельно?

ответ

1

Там нет возможности для извлечения файла robots.txt с User-Agent с помощью RobotFileParser, но вы можете получить его самостоятельно и путь массив строк в 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/")) 
Смежные вопросы