gpt4 book ai didi

python-2.7 - 在每个域上以高并发和低请求率执行 Scrapy 广泛抓取。

转载 作者:行者123 更新时间:2023-12-02 01:25:25 27 4
gpt4 key购买 nike

我正在尝试进行 Scrapy 广泛的爬行。目标是在不同的域进行许多并发爬网,但同时在每个域上轻轻爬行。因此能够保持良好的爬行速度并保持每个 url 上的请求频率较低。

这是我使用的蜘蛛:

import re
import scrapy
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from myproject.items import MyprojectItem

class testSpider(CrawlSpider):
name = "testCrawler16"
start_urls = [
"http://example.com",
]

extractor = SgmlLinkExtractor(deny=('.com','.nl','.org'),
allow=('.se'))

rules = (
Rule(extractor,callback='parse_links',follow=True),
)

def parse_links(self, response):
item = MyprojectItem()
item['url'] =response.url
item['depth'] = response.meta['depth']
yield item

这是我使用的设置:
BOT_NAME = 'myproject'

SPIDER_MODULES = ['myproject.spiders']
NEWSPIDER_MODULE = 'myproject.spiders'

REACTOR_THREADPOOL_MAXSIZE = 20
RETRY_ENABLED = False
REDIRECT_ENABLED = False
DOWNLOAD_TIMEOUT = 15
LOG_LEVEL = 'INFO'
COOKIES_ENABLED = False
DEPTH_LIMIT = 10


AUTOTHROTTLE_ENABLED = True
CONCURRENT_REQUESTS = 10
CONCURRENT_REQUESTS_PER_DOMAIN = 1
AUTOTHROTTLE_TARGET_CONCURRENCY = 1
AUTOTHROTTLE_START_DELAY = 5
AUTOTHROTTLE_MAX_DELAY = 60

问题是,一段时间后,爬虫同时爬行的次数越来越少,并且只会在几个域之间交替,有时只有一个。因此自动 throttle 会减慢爬行速度。我怎样才能让蜘蛛保持并发并与许多域有许多单独的连接,并使用并发来保持速度,同时保持每个域的低请求率?

最佳答案

AUTOTHROTTLE_ENABLED不推荐用于快速抓取,我建议将其设置为 False ,并且只是自己轻轻地爬行。

您在此处需要的唯一设置是 CONCURRENT_REQUESTSCONCURRENT_REQUESTS_PER_DOMAINDOWNLOAD_DELAY .

套装DOWNLOAD_DELAY到您想要抓取每个域的每个请求的值,10例如,如果您想要每分钟 6 个请求(每 10 秒一个)。

套装CONCURRENT_REQUESTS_PER_DOMAIN为 1 表示尊重以前的 DOWNLOAD_DELAY每个域的间隔。

套装CONCURRENT_REQUESTS设置为高值,它可能是您计划抓取的域数量(或更多)。这只是为了不干扰以前的设置。

关于python-2.7 - 在每个域上以高并发和低请求率执行 Scrapy 广泛抓取。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37380588/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com