0

我正在尝试用python和twisted创建一个网络爬虫。发生了什么是在调用的时候 reactor.run()

我不知道要获取的所有链接。所以代码如下:

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

并且句柄页面具有以下内容:

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

所以现在我需要在 urls 中的每个 url 上应用 crawl()。我该怎么做?我应该停止反应器并重新开始吗?如果我遗漏了一些明显的东西,请告诉我。

4

1 回答 1

1

你不想停止反应堆。您只想下载更多页面。因此,您需要重构您的crawl函数以不停止启动反应器。

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 回答