在 Python 中更改与 robotparser 一起使用的用户代理
Change user agent used with robotparser in Python
我正在使用 Python 中 urlib 模块的 robotparser
来确定是否可以下载网页。然而,我正在访问的一个站点 returns 在通过默认用户代理访问 robot.txt 文件时出现 403 错误,但如果例如使用我的用户代理字符串通过请求下载。 (当使用请求包默认用户代理访问时,该站点还会给出 403,表明它们只是阻止 common/generic 用户代理字符串,而不是将它们添加到 robot.txt 文件中)。
无论如何,是否可以更改 rootparser 模块中的用户代理?或者,加载单独下载的 robot.txt 文件?
没有使用 RobotFileParser
通过用户代理获取 robots.txt 的选项,但您可以自己获取它并将字符串数组指向 parse()
方法:
from urllib.robotparser import RobotFileParser
import urllib.request
rp = RobotFileParser()
with urllib.request.urlopen(urllib.request.Request('http://whosebug.com/robots.txt',
headers={'User-Agent': 'Python'})) as response:
rp.parse(response.read().decode("utf-8").splitlines())
print(rp.can_fetch("*", "http://whosebug.com/posts/"))
我正在使用 Python 中 urlib 模块的 robotparser
来确定是否可以下载网页。然而,我正在访问的一个站点 returns 在通过默认用户代理访问 robot.txt 文件时出现 403 错误,但如果例如使用我的用户代理字符串通过请求下载。 (当使用请求包默认用户代理访问时,该站点还会给出 403,表明它们只是阻止 common/generic 用户代理字符串,而不是将它们添加到 robot.txt 文件中)。
无论如何,是否可以更改 rootparser 模块中的用户代理?或者,加载单独下载的 robot.txt 文件?
没有使用 RobotFileParser
通过用户代理获取 robots.txt 的选项,但您可以自己获取它并将字符串数组指向 parse()
方法:
from urllib.robotparser import RobotFileParser
import urllib.request
rp = RobotFileParser()
with urllib.request.urlopen(urllib.request.Request('http://whosebug.com/robots.txt',
headers={'User-Agent': 'Python'})) as response:
rp.parse(response.read().decode("utf-8").splitlines())
print(rp.can_fetch("*", "http://whosebug.com/posts/"))