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))