【问题标题】:Python module "twill"--HTML flood during variable assignmentPython 模块“twill”——变量赋值期间的 HTML 泛滥
【发布时间】:2011-04-29 12:05:57
【问题描述】:

我正在制作一个简单的命令行程序,用于使用 Python 中的 Twill 模块从网站(非常通用)收集和解析信息。我想使用 Twill 的 show() 命令将 HTML 输出分配给一个变量,以通过我的解析命令运行页面,但每次我将它分配给一个变量...

htmlString = twill.commands.show()

我在命令行(和 IDLE,就此而言)收到了大量的 HTML。为什么是这样?我不是要打印变量,它附近没有打印命令。我只想分配以进行进一步的操作。为什么变量赋值会导致打印发生?这不是一个致命的错误或任何东西,只是真的,真的很不方便。我在 Python 2.6、Twill 0.9 和 Ubuntu 上,如果这与任何事情有关的话。

【问题讨论】:

    标签: python variable-assignment twill


    【解决方案1】:

    我建议使用lxmlBeautifulSoup 来解析HTML,从未遇到过twill。但是我看到你调用.show()方法,可能这个方法里面有print声明。

    【讨论】:

    • 是的,我很确定 show() 确实有一个内置的打印命令。我猜这会导致它即使在变量分配期间也会打印到 shell。除了修改 Twill 本身,还有什么方法可以抑制打印?
    • 顺便谢谢你的帮助!不敢相信我得到了答案,更不用说这么快了!
    • 您可以通过将任何启用写入的文件句柄传递给 twill.set_output 来捕获命令输出,例如twill.set_output(StringIO()) 会将所有非错误输出发送到 StringIO() 对象。
    • 知道了!再次感谢。如果其他人必须处理这个问题......我发现在 Twill 中还有一个“浏览器”子模块,其中 show() 派生自,它是 Twill 包装中的另一层,提供稍低级别的功能(它们没有记录在网站)。
    【解决方案2】:

    斜纹布是一种奇怪的东西,它会在终端上打印很多输出。导致打印出来的不是变量赋值,而是show() 方法。它将打印(而不是返回)输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多