"2023-07-08 17:29:49 [scrapy.extensions.logstats] INFO: Crawled 1 pages (at 1 pages/min), scraped 0 items (at 0 items/min)\n2023-07-08 17:30:49 [scrapy.extensions.logstats] INFO: Crawled 1 pages (at 0 pages/min), scraped 0 items (at 0 items/min)\n2023-07-08 17:31:49 [scrapy.extensions.logstats] INFO: Crawled 1 pages (at 0 pages/min), scraped 0 items (at 0 items/min)\n2023-07-08 17:32:49 [scrapy.extensions.logstats] INFO: Crawled 1 pages (at 0 pages/min), scraped 0 items (at 0 items/min)\n2023-07-08 17:33:49 [scrapy.extensions.logstats] INFO: Crawled 1 pages (at 0 pages/min), scraped 0 items (at 0 items/min)\n2023-07-08 17:34:49 [scrapy.extensions.logstats] INFO: Crawled 1 pages (at 0 pages/min), scraped 0 items (at 0 items/min)分布式爬虫结果一直都是这种,怎么办,\n2. 爬取速度过快:如果你的爬虫在短时间内爬取了大量的页面,可能会导致目标网站的反爬虫机制触发,从而导致你的请求被阻止或者页面返回的数据为空。你可以尝试降低爬取速度,增加爬取页面之间的时间间隔。如果是这样,怎么修改代码??"如果你的爬虫在短时间内爬取了大量的页面导致被目标网站的反爬虫机制触发,可以尝试以下几种方法来降低爬取速度和增加爬取页面之间的时间间隔:\n\n1. 增加下载延迟:在Scrapy的settings.py文件中,可以通过设置DOWNLOAD_DELAY参数来增加下载延迟。例如,将DOWNLOAD_DELAY设置为0.5表示每个请求之间的间隔为0.5秒。\n\n\nDOWNLOAD_DELAY = 0.5\n\n\n2. 设置并发请求的数量:通过设置CONCURRENT_REQUESTS参数来限制同时发出的请求数量。将CONCURRENT_REQUESTS设置为一个较小的值,例如2或3,可以减慢爬取速度。\n\n\nCONCURRENT_REQUESTS = 2\n\n\n3. 使用随机User-Agent:目标网站可能会根据User-Agent来判断请求是否为爬虫,如果是则拒绝响应。可以在Scrapy的settings.py文件中设置RANDOM_UA_TYPE参数来使用随机的User-Agent。\n\n\nRANDOM_UA_TYPE = 'random'\n\n\n4. 设置下载中间件:可以编写一个下载中间件来控制请求的频率和间隔。例如,可以编写一个中间件,将每个请求的间隔时间设置为固定的值。\n\npython\nfrom scrapy.downloadermiddlewares.retry import RetryMiddleware\nfrom scrapy.utils.response import response_status_message\nfrom scrapy.utils.python import global_object_name\n\nclass CustomRetryMiddleware(RetryMiddleware):\n\n def __init__(self, settings):\n super().__init__(settings)\n self.download_delay = 0.5\n\n def process_response(self, request, response, spider):\n if response.status in self.retry_http_codes:\n reason = response_status_message(response.status)\n return self._retry(request, reason, spider) or response\n\n return response\n\n\n在settings.py文件中启用自定义的下载中间件。\n\npython\nDOWNLOADER_MIDDLEWARES = {\n 'your_project_name.middlewares.CustomRetryMiddleware': 543,\n}\n\n\n通过以上方法可以降低爬取速度和增加爬取页面之间的时间间隔,从而避免被目标网站的反爬虫机制触发。


原文地址: https://www.cveoy.top/t/topic/pBLh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录