爬虫工作量由小到大的思维转变---<第六章 Scrapy想做事先做人>

发布时间:2023年12月17日

前言:

有新留言,说:"scrapy的业务逻辑什么的都没有问题,可是一旦开启,就被封!"
我的建议:1.没有动用ip池之前,调好配置,完善代码;
? ? ? ? ? ? ? ? 2.有了ip池之后,调高配置,开始爬取;

-------------也就是,在开始项目前,你要表现得像个"人"!!!?

正文:

首先,你就记两个参数(在settings里):
# 配置下载延迟
DOWNLOAD_DELAY = 1

# 配置并发请求的最大数
CONCURRENT_REQUESTS = 16
在Scrapy中,DOWNLOAD_DELAY和CONCURRENT_REQUESTS两个设置是用于控制爬虫行为的重要参数。


DOWNLOAD_DELAY:

这个设置用于指定连续请求之间的下载延迟时间,值以秒为单位。
例如,DOWNLOAD_DELAY = 1意味着Scrapy在执行两个请求之间至少等待1秒。
这有助于减缓爬取速度,避免因为向网站发送过多请求而过快地爬取,从而避免给网站服务器带来负担,或者因为爬取过快而被网站反爬机制封锁。
CONCURRENT_REQUESTS:

这个设置用于控制Scrapy爬虫的最大并发请求数。
默认情况下,Scrapy为16,也就是说,Scrapy可以同时有最多16个请求在进行。
调整这个数字可以控制爬虫的并发水平。增加并发数可能会加速爬取速度,但也增加了服务器的负载和被封锁的风险;减少并发数会减轻对服务器的压力,但爬取速度会慢一些。

合理地使用这两个设置可以帮助你更好地管理爬虫的爬取行为和效率,同时避免不必要的问题(如遭到网站封锁)。

或者,你在你的爬虫文件里面:

class JihaishujuSpider(scrapy.Spider):
    name = 'jjjj'
    allowed_domains = ['XXX.com']
    #这里也可以控制并发量
    custom_settings = {
        'DOWNLOAD_DELAY': 3,
        # 如果您还想进一步限制并发数量,可以设置以下的属性
        'CONCURRENT_REQUESTS_PER_DOMAIN': 1,
        'CONCURRENT_REQUESTS_PER_IP': 1,
    }

custom_settings属性在Scrapy中用于给特定的爬虫指定设置,覆盖项目全局的settings.py文件中的相同设置。这里列出的设置如下:

  • DOWNLOAD_DELAY: 这是在两次连续请求之间的等待时间,用于限制爬虫的爬取速度,以秒为单位。?
    • ????????-DOWNLOAD_DELAY = 3意味着爬虫在执行一个下载请求后,会等待3秒后再执行下一个请求。
  • CONCURRENT_REQUESTS_PER_DOMAIN: 用于控制Scrapy对于任何单一域名的最大并发请求数。
    • ????????CONCURRENT_REQUESTS_PER_DOMAIN = 1意味着同一时间,Scrapy对于同一个域名只会执行一个请求。
  • CONCURRENT_REQUESTS_PER_IP: 用于限制Scrapy对同一个IP,无论域名如何,的最大并发请求数。
    • ????????CONCURRENT_REQUESTS_PER_IP = 1意味着Scrapy会对每个IP地址同时只进行一个请求。

小总结:

  1. DOWNLOAD_DELAY设置可以避免请求过于频繁,使得爬虫行为看起来更像是人类用户。这在对方网站明确禁止过快自动化爬取或有频繁请求限制时非常有用。
  2. 此外,当你设置CONCURRENT_REQUESTS_PER_DOMAIN和CONCURRENT_REQUESTS_PER_IP为1时,Scrapy相当于以串行方式访问每个域和IP,这极大地减少了对服务器造成的负载以及由于发送大量并发请求而引起的潜在问题。
文章来源:https://blog.csdn.net/m0_56758840/article/details/135004602
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。