Web crawler 无头浏览器是否需要注意robots.txt?

Web crawler 无头浏览器是否需要注意robots.txt?,web-crawler,robots.txt,Web Crawler,Robots.txt,我想写一个尊重robots.txt的爬虫程序。不幸的是,无头浏览器似乎不支持robots.txt。我与PhantomJS的人进行了讨论,我得到了答案:PhantomJS是一个浏览器,而不是一个爬虫程序,如果你从脚本使用它,脚本负责尊重robots.txt 这是正确的吗?我认为robots.txt必须适用于每个http请求,而不仅仅是主URL 所以问题是:只检查robots.txt作为主url是否足够?不,只检查robots.txt作为主url是不够的。例如,站点可能允许机器人抓取HTML页面,但

我想写一个尊重robots.txt的爬虫程序。不幸的是,无头浏览器似乎不支持robots.txt。我与PhantomJS的人进行了讨论,我得到了答案:PhantomJS是一个浏览器,而不是一个爬虫程序,如果你从脚本使用它,脚本负责尊重robots.txt

这是正确的吗?我认为robots.txt必须适用于每个http请求,而不仅仅是主URL


所以问题是:只检查robots.txt作为主url是否足够?

不,只检查robots.txt作为主url是不够的。例如,站点可能允许机器人抓取HTML页面,但阻止它们访问图像

这是个问题,不是吗?据我所知,如果你让PhantomJS访问一个网页,它不仅会下载网页内容,还会下载任何引用的脚本、图像、样式表等。因此,你的脚本验证了可以对主url进行爬网,但它不知道该网页引用的其他url

我建议您查看PhantomJSAPI,看看它是否有一个钩子,您可以在其中过滤它请求的URL。也就是说,例如,在PhantomJS尝试下载图像之前,它会调用过滤器以查看是否正常。我不知道这样一个函数是否存在,但如果它存在,那么您可以在那里检查robots.txt


如果您的脚本无法过滤PhantomJS请求的URL,我建议您找一些其他东西作为爬虫程序的基础。否则,爬虫程序可能会访问robots.txt特别禁止爬虫程序访问的文件。

这样的函数确实存在:page.onResourceRequested可以设置为具有两个参数的函数。第二个是网络请求对象,它有一个
abort()
方法。