python - 如果网站因 robots.txt 而无法抓取,则获取响应
问题描述
我正在尝试抓取用户定义的网站,但无法抓取 robots.txt 阻止抓取的网站。这很好,但我想得到响应,我可以向用户显示“您输入的网站由于 robots.txt 而不允许抓取”。
还有其他 3 种类型的预防,我得到了代码并相应地处理,但只有这个例外(即 robots.txt 预防)我无法处理。因此,请让我知道是否有任何方法可以处理此案例并显示相应的错误消息。
我正在使用 Python 3.5.2 和 Scrapy 1.5
解决方案
您应该使用ROBOTSTXT_OBEY
ROBOTSTXT_OBEY=False
有关RobotsTxtMiddleware 的更多信息:
此中间件过滤掉 robots.txt 排除标准禁止的请求。
为了确保 Scrapy 尊重 robots.txt,请确保启用中间件并启用 ROBOTSTXT_OBEY 设置。
如果 Request.meta 的 dont_obey_robotstxt 键设置为 True,即使启用 ROBOTSTXT_OBEY,该中间件也会忽略该请求。
推荐阅读
- performance - 如何编写参数化密码查询?
- sql-server - TSQL IN 与使用 Where with >= 和 <=
- dictionary - CompilerException java.lang.IllegalArgumentException:不知道如何从:clojure.lang.Symbol 创建 ISeq
- java - SQL CURRENT_TIMESTAMP 为 Long?
- sql - 不存在表记录
- math - 理解与证明表相关的真值证明
- ios - 在 UIView(子类)而不是父 UIViewController 中监听方法(touchesBegan、touchesMoved、touchesEnded)?
- c++ - Bullet ApplyCentralImpulse 在 y 和 z 轴上不起作用。从 vs 2015 迁移到 vs 2017 之后,cmake 无法正常工作
- python - Ansible:模板化字符串时出现模板错误
- java - 如何在java t中读取.sql文件以便在连接到数据库后可以运行查询