【问题标题】:Spynner module on python 3python 3上的Spynner模块
【发布时间】:2013-04-18 10:15:51
【问题描述】:

我使用 python 的 2to3.py 来修复 spynner 模块。然后,python 3 上的 QString 似乎存在问题。按照一些用户的建议,我用 QString = str 修改了 spynner 中的 browser.py。 首先,我尝试了以下代码

import spynner
browser = spynner.Browser()
browser.set_proxy("http://username:password@host:3128")
browser.load("http://www.google.com/")

现在python抛出以下错误

File "G:\Python33\lib\site-packages\spynner\browser.py", line 1163, in runjs
js_has_runned_successfully = res.isValid() or res.isNull()
AttributeError: 'str' object has no attribute 'isValid'

res 在 browser.py 中定义为

res = self.webframe.evaluateJavaScript(jscode)

spynner 真的可以在 python 3 上工作吗?

【问题讨论】:

标签: windows-7 pyqt4 python-3.3 spynner


【解决方案1】:

这对我有用。改变这一行

js_has_runned_successfully = res.isNull() or res.isValid()

到这些行:

if res is None:
      js_has_runned_successfully = True
else:
      js_has_runned_successfully = isinstance(res, str)

我认为没有任何计划让 spynner 与 python 3 https://github.com/kiorky/spynner/issues/9 一起工作。但是我可以通过运行这些 sed 命令来使用它(我没有尝试修复整个代码库,我只是想让它在我的应用程序上运行):

sed -i "s/from PyQt4.QtCore import SIGNAL, QUrl, QString, Qt, QEvent/from PyQt4.QtCore import SIGNAL, QUrl, Qt, QEvent/g" browser.py
sed -i "s/if isinstance(s, QString)/if isinstance(s, str)/g" browser.py
sed -i "s/js_has_runned_successfully = res.isNull() or res.isValid()/if res is None:\n                 js_has_runned_successfully = True\n            else:\n                 js_has_runned_successfully = isinstance(res, str)/g" browser.py
sed -i "s/.toUtf8()/.encode('utf-8')/g" browser.py

【讨论】:

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