12

ハードコーディングされたページのリストを反復処理して、すべてを順番にダウンロードする関数 download_all があります。しかし、ページの結果に基づいてリストに動的に追加したい場合は、どうすればよいでしょうか? たとえば、最初のページをダウンロードして解析し、結果に基づいて他のページをイベント ループに追加します。

@asyncio.coroutine
def download_all():
    first_page = 1
    last_page = 100
    download_list = [download(page_number) for page_number in range(first_page, last_page)]
    gen = asyncio.wait(download_list)
    return gen

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    futures = loop.run_until_complete(download_all())
4

2 に答える 2

0

Web Crawlerの例 をご覧ください。

キューを使用asyncio.JoinableQueueしてフェッチ タスクの URL を保存しますが、多くの便利なテクニックも示しています。

于 2015-01-24T23:20:37.343 に答える