gpt4 book ai didi

python - Scrapy,限制 start_url

转载 作者:行者123 更新时间:2023-11-28 20:37:18 24 4
gpt4 key购买 nike

我想知道我可以分配给蜘蛛的 start_urls 的数量是否有限制?据我搜索,似乎没有关于列表限制的文档。

目前我已经设置了我的爬虫,以便从 csv 文件中读取 start_urls 列表。 url 的数量约为 1,000,000。

最佳答案

本身没有限制,但你可能想自己限制它,否则你可能会遇到内存问题。
可能发生的情况是,所有这些 1M 的 url 都将被调度到 scrapy 调度程序,并且由于 python 对象比纯字符串要重得多,你最终会耗尽内存。

为避免这种情况,您可以使用 spider_idle 信号对您的起始 url 进行批处理:

class MySpider(Spider):
name = "spider"
urls = []
batch_size = 10000

@classmethod
def from_crawler(cls, crawler, *args, **kwargs):
spider = cls(crawler, *args, **kwargs)
crawler.signals.connect(spider.idle_consume, signals.spider_idle)
return spider

def __init__(self, crawler):
self.crawler = crawler
self.urls = [] # read from file

def start_requests(self):
for i in range(self.batch_size):
url = self.urls.pop(0)
yield Request(url)


def parse(self, response):
pass
# parse

def idle_consume(self):
"""
Everytime spider is about to close check our urls
buffer if we have something left to crawl
"""
reqs = self.start_requests()
if not reqs:
return
logging.info('Consuming batch')
for req in reqs:
self.crawler.engine.schedule(req, self)
raise DontCloseSpider

关于python - Scrapy,限制 start_url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43532976/

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