scrapy爬虫出现Forbidden by robots.txt

本文介绍了解决Scrapy爬虫遇到的Forbidden by robots.txt问题的方法。通过调整ROBOTSTXT_OBEY设置,可以有效避免因遵守robots协议而无法抓取特定网站内容的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://blog.youkuaiyun.com/yimingsilence/article/details/52119720
先说结论,关闭scrapy自带的ROBOTSTXT_OBEY功能,在setting找到这个变量,设置为False即可解决。
使用scrapy爬取淘宝页面的时候,在提交http请求时出现debug信息Forbidden by robots.txt,看来是请求被拒绝了。开始因为是淘宝页面有什么保密机制,防止爬虫来抓取页面,于是在spider中填入各种header信息,伪装成浏览器,结果还是不行。。。用chrome抓包看了半天感觉没有影响简单页面抓取的机制(其他保密机制应该还是有的,打开一个页面时,向不同服务器递交了很多请求,还设定了一些不知道干啥的cookies),最后用urllib伪造请求发现页面都能抓取回来。于是上网查了一下robot.txt是什么,发现原来有个robot协议,终于恍然大悟:
我们观察scrapy抓包时的输出就能发现,在请求我们设定的url之前,它会先向服务器根目录请求一个txt文件:

2016-06-10 18:16:26 [scrapy] DEBUG: Crawled (200)

PS D:\test\autohome> scrapy crawl car_spider 2025-06-06 15:52:53 [scrapy.utils.log] INFO: Scrapy 2.13.0 started (bot: autohome) 2025-06-06 15:52:53 [scrapy.utils.log] INFO: Versions: {'lxml': '5.4.0', 'libxml2': '2.11.9', 'cssselect': '1.3.0', 'parsel': '1.10.0', 'w3lib': '2.3.1', 'Twisted': '24.11.0', 'Python': '3.9.12 (tags/v3.9.12:b28265d, Mar 23 2022, 23:52:46) [MSC v.1929 ' '64 bit (AMD64)]', 'pyOpenSSL': '25.1.0 (OpenSSL 3.5.0 8 Apr 2025)', 'cryptography': '45.0.3', 'Platform': 'Windows-10-10.0.26100-SP0'} 2025-06-06 15:52:53 [scrapy.addons] INFO: Enabled addons: [] 2025-06-06 15:52:53 [asyncio] DEBUG: Using selector: SelectSelector 2025-06-06 15:52:53 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.asyncioreactor.AsyncioSelectorReactor 2025-06-06 15:52:53 [scrapy.utils.log] DEBUG: Using asyncio event loop: asyncio.windows_events._WindowsSelectorEventLoop 2025-06-06 15:52:53 [scrapy.extensions.telnet] INFO: Telnet Password: 81e14a917b757f8e 2025-06-06 15:52:53 [scrapy.middleware] INFO: Enabled extensions: ['scrapy.extensions.corestats.CoreStats', 'scrapy.extensions.telnet.TelnetConsole', 'scrapy.extensions.feedexport.FeedExporter', 'scrapy.extensions.logstats.LogStats'] 2025-06-06 15:52:53 [scrapy.crawler] INFO: Overridden settings: {'BOT_NAME': 'autohome', 'DOWNLOAD_DELAY': 0.5, 'FEED_EXPORT_ENCODING': 'utf-8', 'NEWSPIDER_MODULE': 'autohome.spiders', 'SPIDER_MODULES': ['autohome.spiders'], 'USER_AGENT': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ' '(KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'} 2025-06-06 15:52:53 [scrapy.middleware] INFO: Enabled downloader middlewares: ['scrapy.downloadermiddlewares.offsite.OffsiteMiddleware', 'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware', 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware', 'scrapy.downloadermiddlewares.retry.RetryMiddleware', 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware', 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware', 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware', 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware', 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware', 'scrapy.downloadermiddlewares.stats.DownloaderStats'] 2025-06-06 15:52:53 [scrapy.middleware] INFO: Enabled spider middlewares: ['scrapy.spidermiddlewares.start.StartSpiderMiddleware', 'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware', 'scrapy.spidermiddlewares.referer.RefererMiddleware', 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware', 'scrapy.spidermiddlewares.depth.DepthMiddleware'] 2025-06-06 15:52:53 [scrapy.middleware] INFO: Enabled item pipelines: ['scrapy.pipelines.images.ImagesPipeline'] 2025-06-06 15:52:53 [scrapy.core.engine] INFO: Spider opened 2025-06-06 15:52:53 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2025-06-06 15:52:53 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023 2025-06-06 15:52:54 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (302) to <GET https://car.autohome.com.cn/price/series-3179-0-3-0-0-0-0-1.html> from <GET https://car.autohome.com.cn/price/series-3179.html> 2025-06-06 15:52:55 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://car.autohome.com.cn/price/series-3179-0-3-0-0-0-0-1.html> (referer: None) 2025-06-06 15:52:55 [scrapy.downloadermiddlewares.offsite] DEBUG: Filtered offsite request to 'car.autohome.com.cn': <GET https://car.autohome.com.cn/price/series-3179.html> 2025-06-06 15:52:55 [scrapy.core.engine] INFO: Closing spider (finished) 2025-06-06 15:52:55 [scrapy.extensions.feedexport] INFO: Stored csv feed (0 items) in: cars.csv 2025-06-06 15:52:55 [scrapy.statscollectors] INFO: Dumping Scrapy stats: {'downloader/request_bytes': 658, 'downloader/request_count': 2, 'downloader/request_method_count/GET': 2, 'downloader/response_bytes': 56623, 'downloader/response_count': 2, 'downloader/response_status_count/200': 1, 'downloader/response_status_count/302': 1, 'elapsed_time_seconds': 1.399357, 'feedexport/success_count/FileFeedStorage': 1, 'finish_reason': 'finished', 'finish_time': datetime.datetime(2025, 6, 6, 7, 52, 55, 233288, tzinfo=datetime.timezone.utc), 'httpcompression/response_bytes': 301944, 'httpcompression/response_count': 1, 'items_per_minute': 0.0, 'log_count/DEBUG': 6, 'log_count/INFO': 11, 'offsite/domains': 1, 'offsite/filtered': 6, 'request_depth_max': 1, 'response_received_count': 1, 'responses_per_minute': 60.0, 'scheduler/dequeued': 2, 'scheduler/dequeued/memory': 2, 'scheduler/enqueued': 2, 'scheduler/enqueued/memory': 2, 'start_time': datetime.datetime(2025, 6, 6, 7, 52, 53, 833931, tzinfo=datetime.timezone.utc)} 2025-06-06 15:52:55 [scrapy.core.engine] INFO: Spider closed (finished) 运行之后出现这个问题
最新发布
06-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值