将 show() 与 twill 一起使用会向控制台发送垃圾邮件 HTML
Using show() with twill spams the console with HTML
我一直在使用函数 twill.commands.show()
从页面获取原始 HTML。我 运行 这大约每 5 秒一次。每次函数 运行,它都会用提到的原始网页 HTML 向控制台发送垃圾邮件。我需要使用控制台进行调试,并且由于控制台不断充满HTML,所以这样做是不可能的。由于 show()
被编程为打印 HTML 和 return 它作为一个字符串,我将不得不编辑斜纹,这超出了我的技能范围 way ,并使程序在其他设备上不兼容。尽管反复保存和读取文件可能有效,但每 5 秒执行一次似乎不切实际。
代码:
go('http://google.com/')
html=show()
同样,twill 有一个 save_html
,可用于保存到文件,但我每 5 秒执行一次,它可能会减慢 program/computer,尤其是当它正在运行 旧 OS.
谢谢!
Twill 默认写入 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 对象。
捕获字符串中的输出并使用正则表达式将所有标签替换为空字符串,以便您可以获得文本。
import re
from StringIO import StringIO
sio = StringIO()
twill.set_output(sio)
show()
print(re.sub(r'<.*?>','',sio.getvalue(),flags=re.DOTALL))
我一直在使用函数 twill.commands.show()
从页面获取原始 HTML。我 运行 这大约每 5 秒一次。每次函数 运行,它都会用提到的原始网页 HTML 向控制台发送垃圾邮件。我需要使用控制台进行调试,并且由于控制台不断充满HTML,所以这样做是不可能的。由于 show()
被编程为打印 HTML 和 return 它作为一个字符串,我将不得不编辑斜纹,这超出了我的技能范围 way ,并使程序在其他设备上不兼容。尽管反复保存和读取文件可能有效,但每 5 秒执行一次似乎不切实际。
代码:
go('http://google.com/')
html=show()
同样,twill 有一个 save_html
,可用于保存到文件,但我每 5 秒执行一次,它可能会减慢 program/computer,尤其是当它正在运行 旧 OS.
谢谢!
Twill 默认写入 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 对象。
捕获字符串中的输出并使用正则表达式将所有标签替换为空字符串,以便您可以获得文本。
import re
from StringIO import StringIO
sio = StringIO()
twill.set_output(sio)
show()
print(re.sub(r'<.*?>','',sio.getvalue(),flags=re.DOTALL))