1

我想创建一个回调,getPage在特定的 url 上执行并在操作完成时将其打印出来。目前,当我打印dpage(参见下面的代码)时,我得到了对延迟对象与page.

为什么延迟对象的内存位置在 printpage和 print之间发生变化d

最终,我希望这个程序循环浏览我的 4 个网站的列表,为每个单独的连接创建回调,将它们关闭,并在它们准备好时打印每个页面。如果不是太多要求,这可以证明吗?

from twisted.web.client import getPage
from twisted.internet import reactor
from twisted.internet.defer import Deferred

def connect(url):
    page = getPage(url)

print page返回<Deferred object at 0x23dcc68>

print d返回<Deferred object at 0x7f1bacacc3b0>

当前结果(以“http://www.example.com”为例):

d = Deferred()

d.addCallback(connect)

reactor.callWhenRunning(d.callback, 'http://www.example.com')

reactor.callLater(4, reactor.stop)

reactor.run()
4

1 回答 1

0

您可能应该使用较新的、更漂亮twisted.web.client.Agent的而不是较旧且有些受限的getPage. 幸运的是,有一个关于如何使用的非常详尽的教程Agent,以及它的一些配套类,如ProxyAgentRedirectAgentCookieAgentContentDecoderAgent.

不过,首先,您可能需要熟悉有关如何使用Deferreds的文档。

于 2012-11-20T05:04:00.577 回答