我正在使用Python中urlib模块的robotparser
来确定是否可以下载网页。我访问的一个站点在通过默认用户代理访问robot.txt文件时返回403错误,但是正确的响应,例如,使用我的用户代理字符串通过请求下载。 (当使用请求包默认用户代理访问时,该站点还提供403,表明它们只是阻止公共/通用用户代理字符串,而不是将它们添加到robot.txt文件中。)
无论如何,是否可以在rootparser模块中更改用户代理?或者,加载一个单独下载的robot.txt文件?
答案 0 :(得分:1)
没有选项可以使用RobotFileParser
使用User-Agent获取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/"))