Python异步爬虫:使用 `await` 获取 `_crawl` 方法结果
在使用 Python 异步爬虫时,你可能会遇到需要获取 _crawl 方法执行结果 result 的情况。本文将展示如何使用 await 关键字来实现这一目的。
原始代码:
def _crawl(self, crawler, *args, **kwargs):
    self.crawlers.add(crawler)
    d = crawler.crawl(*args, **kwargs)
    self._active.add(d)
    def _done(result):
        self.crawlers.discard(crawler)
        self._active.discard(d)
        self.bootstrap_failed |= not getattr(crawler, 'spider', None)
        return result
    return d.addBoth(_done)
获取 result 的方法:
为了获取 result,你可以使用 await 关键字来等待 _crawl 方法执行完成并返回结果。
代码示例:
async def _crawl(self, crawler, *args, **kwargs):
    self.crawlers.add(crawler)
    d = crawler.crawl(*args, **kwargs)
    self._active.add(d)
    def _done(result):
        self.crawlers.discard(crawler)
        self._active.discard(d)
        self.bootstrap_failed |= not getattr(crawler, 'spider', None)
        return result
    result = await d
    return _done(result)
在上述代码中,result = await d 这一行将等待 d 执行完成,并将返回值赋予 result。
总结:
通过使用 await 关键字,你可以轻松地获取 _crawl 方法的返回值 result,并进行进一步的处理。
原文地址: https://www.cveoy.top/t/topic/qwEa 著作权归作者所有。请勿转载和采集!