在Python中更改与robotparser一起使用的用户代理

时间:2016-06-21 01:45:46

标签: python python-3.x web-scraping robots.txt

我正在使用Python中urlib模块的robotparser来确定是否可以下载网页。我访问的一个站点在通过默认用户代理访问robot.txt文件时返回403错误,但是正确的响应,例如,使用我的用户代理字符串通过请求下载。 (当使用请求包默认用户代理访问时,该站点还提供403,表明它们只是阻止公共/通用用户代理字符串,而不是将它们添加到robot.txt文件中。)

无论如何,是否可以在rootparser模块中更改用户代理?或者,加载一个单独下载的robot.txt文件?

1 个答案:

答案 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/"))