我一直在使用功能twill.commands.show()
从页面获取原始HTML。我大约每5秒运行一次。每次运行该函数时,它都会使用提到的webpages原始HTML来控制控制台。我需要使用控制台进行调试,并且由于控制台不断填充HTML,因此这样做是不可能的。由于show()
被编程为打印HTML并将其作为字符串返回,因此我必须编辑twill,这超出了我的技能组 way ,并使程序在其他设备上不兼容。尽管一遍又一遍地保存和读取文件可能会起作用,但每5秒做一次似乎是不切实际的。
代码:
go('http://google.com/')
html=show()
再次,斜纹有一个save_html
,可用于保存到文件,但我每隔5秒就会这样做,这可能会使程序/计算机变慢,特别是如果它'在较旧的操作系统上运行。
谢谢!
答案 0 :(得分:2)
默认情况下,斜纹写入stdout
。
您可以使用twill.set_output(fp)
重定向其标准输出。有几种可能的实现方式:
写信给StringIO
:
from StringIO import StringIO
sio = StringIO()
twill.set_output(sio)
html = show() # html+'\n' == sio.getvalue()
或/dev/null
:
import os
null = open(os.devnull, 'w')
twill.set_output(null)
html = show() # writing to /dev/null or nul
null.close()
或者根本没有:
class DevNull(object):
def write(self, str):
pass
twill.set_output(DevNull())
html = show()
或您喜欢的任何其他可写文件类python对象。
答案 1 :(得分:1)
捕获字符串中的输出并使用正则表达式将所有标记替换为空字符串,以便您可以获取文本。
import re
from StringIO import StringIO
sio = StringIO()
twill.set_output(sio)
show()
print(re.sub(r'<.*?>','',sio.getvalue(),flags=re.DOTALL))