如何改造 Scrapy 从而实现多网站大规模爬取?
Scrapy 框架默认是何改用来开发定向爬虫的。一般情况下,而实在 spiders 文件夹下面的现多一个.py 文件对应了一个网站的爬取。
但还有另外一种爬虫,网站它不会拘泥于提取页面上的大规特定文字,而是模爬关注如何并行爬取非常多的网站。这种爬虫可以实现大规模的何改爬取。这种爬虫,而实一般是现多从若干个种子网址开始爬。进入每个网址后,网站把该页面的大规所有网址作为新的种子网址继续爬取,源源不断,模爬生生不息。何改但爬到以后,而实一般直接把整个页面的现多源代码保存下来,通过 Kafka 或者其他组件传给另外的服务进行解析。
为了让 Scrapy 适配这种通用的解析逻辑,需要做一些定制化修改。服务器托管Scrapy 官方文档中,给出了几点修改建议。

修改调度队列
Scrapy 默认的调度队列是scrapy.pqueues.ScrapyPriorityQueue,它适合做定向爬虫使用,对于通用爬虫,我们应该修改为scrapy.pqueues.DownloaderAwarePriorityQueue。在 settings.py文件中添加一行:
SCHEDULER_PRIORITY_QUEUE = scrapy.pqueues.DownloaderAwarePriorityQueue提高并发量在
settings.py中增加配置:
CONCURRENT_REQUESTS = 100 CONCURRENT_REQUESTS_PER_DOMAIN = 100但是并发量实际上受内存和 CPU 的限制,建议实际测试,选择最适合的数字。
提高 Twisted IO 线程池大小
Scrapy 在做 DNS 解析的时候,是阻塞式的。所以请求量越高,解析 DNS 就会越慢。为了避免这个情况,可以提高线程池的大小。在 settings.py中增加一个配置:
REACTOR_THREADPOOL_MAXSIZE = 20搭建专用 DNS 服务器
如果爬虫进程数太多,并发又太快,可能会对 DNS 服务器形成 Dos 攻击。所以建议自己单独搭建一个 DNS 服务器。
减少日志量
Scrapy 默认是 DEBUG 级别的日志等级,源码库每次爬取会产生大量的日志。通过把日志等级调整到INFO 可以大大减少日志量。在 settings.py 中增加一行:
LOG_LEVEL = INFO禁用 Cookies 和自动重试
大规模爬虫一般不需要用到 Cookies,所以可以把它禁用。请求失败的自动重试会降低爬虫的速度。但是由于大规模爬虫的爬取范围很大,对于个别失败的请求没有必要重试。因此修改settings.py:
COOKIES_ENABLED = False RETRY_ENABLED = False降低请求超时时间,禁用自动跳转
有些网址因为远在大洋彼岸或者受到了干扰,请求响应时间很长。对于这种网址,应该果断放弃,避免影响其他网址的爬取。
禁用自动跳转功能,也有助于提高网页访问速度。
DOWNLOAD_TIMEOUT = 10 REDIRECT_ENABLED = False使用广度有限搜索
Scrapy 默认基于深度优先(DFO)搜索算法。但在大规模爬虫中,我们一般会使用广度有限(BFO)搜索算法:
DEPTH_PRIORITY = 1 SCHEDULER_DISK_QUEUE = scrapy.squeues.PickleFifoDiskQueue SCHEDULER_MEMORY_QUEUE = scrapy.squeues.FifoMemoryQueue关注内存,谨防内存泄露如果你发现爬虫占用大量内存,但是速度远远低于你设置的并发速度,那么要考虑是否发生了内存泄露。香港云服务器
相关文章
电脑屏幕刷新率的重要性(高刷新率带来更好的视觉体验和游戏性能)
摘要:在现代社会中,电脑已经成为人们工作和娱乐的重要工具。而电脑屏幕的刷新率作为影响视觉体验的重要因素之一,一直备受关注。本文将探讨以电脑屏幕刷新率越高越好的论题,解释高刷新率如何带来更...2025-11-05
上一篇文章说到 JVM垃圾回收算法的两个优化标的:吞吐量和停顿时长,并提到这两个优化目标是有冲突的。那么有没有可能提高吞吐量而不影响停顿时长,甚至缩短停顿时长呢?2025-11-05
品牌域名是什么?好域名对品牌的影响有多大?众所周知,域名是唯一的,资源有限,比商标更独特。域名注册一般是先到先得的注意事项,以后来的人只能注册其他域名或协商购买域名。一个好域名的价值是什么?下面聚名网2025-11-05- 如何选择适合自己的域名?怎么选择域名?域名是网站不可或缺的一部分。域名就像互联网上的虚拟门牌号码。一个简单易记的域名是您在Internet上建立信誉并赢得商机的第一步。下面聚名网就带大家看看如何选择适2025-11-05
- 摘要:随着科技的不断发展,手机成为我们生活中不可或缺的一部分。而刷机作为个性化定制手机的一种方式,受到了越来越多人的关注。本文以zy为例,将详细介绍如何进行刷机操作,帮助大家解决在刷机过...2025-11-05
注册的域名怎么出售?有什么方法?在互联网飞速发展的今天,域名的作用早已不仅仅局限于做网站。域名已作为商品投资。然后将涉及到域名的销售,在哪里销售域名?下面益华网络就带大家看看注册的域名怎么出售和有什么2025-11-05

最新评论