0

Pythonとツイストを使用してWebクローラーを作成しようとしています。 reactor.run()

取得するためのすべてのリンクを知りません。したがって、コードは次のようになります。

def crawl(url):
    d = getPage(url)
    d.addCallback(handlePage)
    reactor.run()

ハンドルページには次のようなものがあります。

def handlePage(output):
    urls = getAllUrls(output)

だから今、私はurlsの各urlにcrawl()を適用する必要があります。それを行うにはどうすればよいですか?reactorを停止して再開する必要がありますか?明らかな何かが欠けている場合は教えてください。

4

1 に答える 1

1

あなたは原子炉を止めたくない。あなたはただもっと多くのページをダウンロードしたいだけです。したがって、reactorcrawlを停止または開始しないように、関数をリファクタリングする必要があります。

def crawl(url):
    d = getPage(url)
    d.addCallback(handlePage)

def handlePage(output):
    urls = getAllUrls(output)
    for url in urls:
        crawl(url)

crawl(url)
reactor.run()

ただし、独自にゼロから構築するのではなく、scrapyを検討することをお勧めします。

于 2012-04-18T19:42:33.553 に答える