问题描述
我知道我可以使用 python 并触发 http(s) 请求自己检查 robots.txt 文件是否存在。由于 Scrapy 正在检查和下载它以使蜘蛛遵守其中的规则,因此 Spider 类中是否有一个属性或方法或任何东西可以让我知道要抓取的给定网站是否存在 robots.txt?
尝试使用爬虫统计数据:
见here
self.crawler.stats.inc_value(f'robotstxt/response_status_count/{response.status}')
我对有和没有 robots.txt 的网站进行了几次测试,我可以看到有关 robots.txt 存在的正确信息。例如,在我的 spider_close 信号处理程序的 Spider 类中记录 self.crawler.stats.__dict__
我看到:
'robotstxt/response_status_count/200': 1
带有 robots.txt 的网站
'robotstxt/response_status_count/404': 1
没有 robots.txt 的网站
如果在爬行过程中蜘蛛遇到多个域,这将不起作用,并且统计结果类似于:
"robotstxt/response_status_count/200": 1,"robotstxt/response_status_count/301": 6,"robotstxt/response_status_count/404": 9,"robotstxt/response_status_count/403": 1
但我无法将 HTTP 状态代码响应映射到域...
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)