处理后是否未发布响应数据?
你好,代码示例如下: def start_requests(self): for url in url_list: yield scrapy.Request(url=url, headers=xxx, callback=self.parse, errback=None, dont_filter=False) def parse(self, response): ... response.xpath('//*[@id="feed-main-list"]/li') ... 如果我们调用 selector 相关函数,如 xpath(...),则每个 url 的解析后,响应数据不会被释放。 在 scrapy/http/response/text.py 中, class TextResponse(Response): ... def selector(self): from scrapy.selector import Selector if self._cached_selector is None: self._cached_selector = Selector(self) return self._cached_selector def xpath(self, query, **kwargs): return self.selector.xpath(query, **kwargs) 它具有循环引用,即 response -> Selector -> response。 在我的粗略测试中,如果我不使用 self._cached_selector 来保持 Selector 对象,则内存使用量将从 6x% 减少到 4x%。 那么,我是否正确?或者如何理解它?
内容来源: scrapy/scrapy