Python 将show()与twill一起使用,可以使用HTML对控制台进行垃圾邮件处理

Python 将show()与twill一起使用,可以使用HTML对控制台进行垃圾邮件处理,python,twill,Python,Twill,我一直在使用函数twill.commands.show()从页面获取原始HTML。我大约每5秒运行一次。每次运行该函数时,它都会向控制台发送所提到的网页原始HTML。我需要使用控制台进行调试,因为控制台中经常充满HTML,所以这样做是不可能的。由于show()被编程为打印HTML并将其作为字符串返回,因此我必须编辑twill,这远远超出了我的技能范围,并使该程序在其他设备上不兼容。虽然反复保存和读取文件可能会奏效,但每5秒保存一次似乎不切实际 代码: 同样,twill有一个save_html,可

我一直在使用函数
twill.commands.show()
从页面获取原始HTML。我大约每5秒运行一次。每次运行该函数时,它都会向控制台发送所提到的网页原始HTML。我需要使用控制台进行调试,因为控制台中经常充满HTML,所以这样做是不可能的。由于
show()
被编程为打印HTML并将其作为字符串返回,因此我必须编辑twill,这远远超出了我的技能范围,并使该程序在其他设备上不兼容。虽然反复保存和读取文件可能会奏效,但每5秒保存一次似乎不切实际

代码:

同样,twill有一个
save_html
,可以用来保存到文件中,但我每5秒钟就这样做一次,这可能会减慢程序/计算机的速度,尤其是在旧操作系统上运行时


谢谢

默认情况下,Twill写入标准输出

您可以使用
twill.set\u 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))
重新导入
从StringIO导入StringIO
sio=StringIO()
斜纹设置输出(sio)
show()
打印(re.sub(r'','',sio.getvalue(),flags=re.DOTALL))

请您加入一些您尝试过的代码,以便我们有一个案例可以尝试并复制?@sircapsalot刚刚问了为什么需要替换标记?您说“要获取文本”,我以为您只需要html中的文本。对不起,我的错,我是指原始HTMLtanks!(我用了最后一个)
import re
from StringIO import StringIO

sio = StringIO()
twill.set_output(sio)
show()
print(re.sub(r'<.*?>','',sio.getvalue(),flags=re.DOTALL))