- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我试图就此获得支持,但我完全感到困惑。
这是我的代码:
from twisted.internet import reactor
from twisted.web.client import getPage
from twisted.web.error import Error
from twisted.internet.defer import DeferredList
from sys import argv
class GrabPage:
def __init__(self, page):
self.page = page
def start(self, *args):
if args == ():
# We apparently don't need authentication for this
d1 = getPage(self.page)
else:
if len(args) == 2:
# We have our login information
d1 = getPage(self.page, headers={"Authorization": " ".join(args)})
else:
raise Exception('Missing parameters')
d1.addCallback(self.pageCallback)
dl = DeferredList([d1])
d1.addErrback(self.errorHandler)
dl.addCallback(self.listCallback)
def errorHandler(self,result):
# Bad thingy!
pass
def pageCallback(self, result):
return result
def listCallback(self, result):
print result
a = GrabPage('http://www.google.com')
data = a.start() # Not the HTML
我希望在调用 start() 时获取提供给 pageCallback 的 HTML。这对我来说是一个皮塔饼。泰!为我糟糕的编码感到抱歉。
最佳答案
您缺少 Twisted 运作方式的基础知识。这一切都围绕着 reactor
,您甚至从未运行过它。把 react 堆想象成这样:
(来源:krondo.com)
在您启动 react 器之前,通过设置延迟,您所做的只是将它们链接起来,没有可触发的事件。
我建议你给Twisted Intro通过 Dave Peticolas一读。它速度很快,而且确实为您提供了 Twisted 文档没有提供的所有缺失信息。
无论如何,这里是尽可能最基本的getPage
用法示例:
from twisted.web.client import getPage
from twisted.internet import reactor
url = 'http://aol.com'
def print_and_stop(output):
print output
if reactor.running:
reactor.stop()
if __name__ == '__main__':
print 'fetching', url
d = getPage(url)
d.addCallback(print_and_stop)
reactor.run()
由于 getPage
返回一个延迟链,我将回调 print_and_stop
添加到延迟链。之后,我启动了 reactor
。 react 器触发 getPage
,然后触发 print_and_stop
,打印来自 aol.com 的数据,然后停止 react 器。
编辑以显示 OP 代码的工作示例:
class GrabPage:
def __init__(self, page):
self.page = page
########### I added this:
self.data = None
def start(self, *args):
if args == ():
# We apparently don't need authentication for this
d1 = getPage(self.page)
else:
if len(args) == 2:
# We have our login information
d1 = getPage(self.page, headers={"Authorization": " ".join(args)})
else:
raise Exception('Missing parameters')
d1.addCallback(self.pageCallback)
dl = DeferredList([d1])
d1.addErrback(self.errorHandler)
dl.addCallback(self.listCallback)
def errorHandler(self,result):
# Bad thingy!
pass
def pageCallback(self, result):
########### I added this, to hold the data:
self.data = result
return result
def listCallback(self, result):
print result
# Added for effect:
if reactor.running:
reactor.stop()
a = GrabPage('http://google.com')
########### Just call it without assigning to data
#data = a.start() # Not the HTML
a.start()
########### I added this:
if not reactor.running:
reactor.run()
########### Reference the data attribute from the class
data = a.data
print '------REACTOR STOPPED------'
print
########### First 100 characters of a.data:
print '------a.data[:100]------'
print data[:100]
关于python - 扭曲的 Python getPage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2671780/
我使用 getpage() 加载页面: d = getPage(url) d.addCallback(parsePage,url) d.addErrback(downloadError,url)
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve t
我试图就此获得支持,但我完全感到困惑。 这是我的代码: from twisted.internet import reactor from twisted.web.client import getP
我尝试在登录应用程序后直接访问 URL (admin.do),并且该 URL 是受限制的页面。但是,当我在浏览器上运行该场景时,我可以看到页面被重定向到访问被拒绝的页面。但是,当我使用 htmluni
我尝试使用 HtmlUnit WebClient.getPage 使用 javascript 加载页面。但加载的页面不会处理其中的 javascript 代码。 我尝试根据我能找到的所有相关答案在 W
我正在尝试使用 htmlUnit 库获取页面 html。我认为某些 javascript 没有正确执行,因为我在某些属性值中得到了 Nan。我使用此代码来检索页面: webClient = new W
我有一个基本问题。我正在使用 Vaadin 8。 当我使用时: Page.getCurrent().setTitle(IStringConstants.HOMEPAGE_LABEL); 这可以正常工作
我是第一次尝试 HtmlUnit。我正在 Linux Mint 17.1 上进行开发。我也是 Java 新手。我安装了jenkins-htmlunit,我的java环境是java-7-openjdk-
我有一个使用此脚本定期刷新的页面: from twisted.web.client import getPage from twisted.internet import reactor, task
在尝试从 .Net MVC 应用程序中的 Embedded Power BI 报告中获取视觉效果时,我尝试了下面提到的来自 Embedded Power BI Playground 站点的代码。但我无
这是我使用的简单代码片段: final WebClient client = new WebClient(); final HtmlPage page = client.getPage("http:/
我在连接到网站时遇到此错误。 Website java.lang.NoSuchMethodError: org.apache.commons.io.IOUtils.toString(Ljava/io/
我想在 webapp 中使用 Twisted 非阻塞 getPage 方法,但与 urlopen 相比,使用这样的函数感觉相当复杂。 这是我要实现的目标的示例: def web_request(req
本文整理了Java中com.koolearn.klibrary.text.view.ZLTextView.getPage()方法的一些代码示例,展示了ZLTextView.getPage()的具体用法
我正在尝试使用 urlopen() 获取“https”网页(例如: https://github.com/twitter/bootstrap ),它会毫无问题地返回页面。但我们正在评估一个新项目的 T
下面是我使用 twisted 获取页面的回调。 client.getPage(iUrl,headers,method='GET',cookies=cj).addCallback(self.p
我正在将 PDFBox 1.8.x 迁移到 2.0.12,并且必须应对一些更改。 我无法弄清楚的最后一个发生在下面的代码中。 public static byte[] mergeDocumen
我使用 Symfony 1.4,我想查询在 MySQL 服务器上定义的变量的值,但不幸的是现在不能查询(它是一个动态分配的 IP,每天通过外部 API 更改)。包含此变量的 MySQL 服务器上的相应
我正在尝试使用 HTMLUnit 自动从 Web 应用程序下载数据。但是,我在 getPage() 上收到了一大堆警告(其中大部分似乎都处理我认为我什至不需要的链接脚本),然后是致命的 com.gar
我正在编写一个脚本,用于持续(每 30-120 秒)抓取查询大量 URL 的信息(Icecast/Shoutcast 服务器状态页面),大约 500 个 URL。它工作正常,但 python 进程驻留
我是一名优秀的程序员,十分优秀!