我想编写一个尊重robots.txt的抓取工具。不幸的是,无头浏览器似乎不支持robots.txt。我和PhantomJS的人讨论了一下,我得到了答案:PhantomJS是一个浏览器,而不是一个爬虫,如果你从脚本中使用它,脚本负责尊重robots.txt。
这是对的吗?我认为必须尊重robots.txt 每个 http请求,而不仅仅是主网址。
所以问题:只需检查robots.txt的主网址就足够了吗?
答案 0 :(得分:2)
不,仅仅检查robots.txt是否为主网址是不够的。例如,站点可能允许机器人抓取HTML页面,但阻止它们访问图像。
这是一个问题,不是吗?据我了解,如果你要求PhantomJS访问一个网页,它不仅会下载页面内容,还会下载任何引用的脚本,图像,样式表等。所以你的脚本验证了可以抓取主网址,但是它无法知道网页引用的其他网址。
我建议您查看PhantomJS API以查看它是否有一个钩子,您可以在其中过滤它请求的URL。也就是说,在PhantomJS尝试下载图像之前,它会调用过滤器来查看它是否正常。我不知道这样的功能是否存在,但是如果确实存在,则可以检查robots.txt。
如果您的脚本没有办法过滤PhantomJS请求的网址,我建议您找一些基于您的抓取工具的其他内容。否则,您将面临被robots.txt访问特别禁止抓取工具的文件的风险。