2017-01-23 26 views
0

我正在尝试使用Pyside来渲染网页的JavaScript生成的HTML,然后使用该HTML进行网页浏览。我开始使用this quick example,但结果非常不一致。为什么QtWebkit for python不能加载大多数网页?

问题是,有些页面工作得很好,但其他页面无限悬挂。我不是说在几秒钟后放弃,我已经让脚本在不同时间运行了几个小时,并且没有取得进展。

我当前的代码如下:

import sys 
from PySide.QtCore import * 
from PySide.QtGui import * 
from PySide.QtWebKit import * 

class Render(QWebPage): 
    def __init__(self, url): 
     self.app = QApplication(sys.argv) 
     QWebPage.__init__(self) 
     self.loadFinished[bool].connect(self.end) 
     self.mainFrame().load(url) 

     self.app.exec_() 

    def end(self, result): 
     print 'end' 
     self.finalFrame = self.mainFrame() 
     self.app.quit() 

r = Render('http://pyside.github.io/docs/pyside/PySide/QtWebKit/index.html') 
print r.finalFrame.toHtml().encode('ascii', 'ignore') 
print 'done' 

这页的作品,因为这样做在this answer给出的页面,但大多数人( 'https://www.google.ca/', 'https://webscraping.com')没有。

如何获取这些页面加载?

+0

这个问题必须在你的最后,因为我没有问题加载任何这些网页。因此,除非您有一些重要的新信息要添加,否则这实际上只是关于此主题的其他问题的复本。曾尝试使用不同的方法加载这些网址,例如[urllib2](https://docs.python.org/2/library/urllib2.html#module-urllib2)? – ekhumoro

+0

是的,我可以使用urllib2加载它们,它工作正常。我提到的网址要么永远不会加载,要么花费时间超过6小时(到目前为止)。从我读的这可能是它可能是一个SSL错误,但没有建议的修复程序,我发现可以实施的各种原因(我没有使用套接字,QSslConfiguration模块不能导入等) – GreySage

+0

Can请说明您正在使用的PySide和Qt4的哪些版本,以及在哪个平台上?另外,请确保您在标准控制台而不是IDE或调试器中测试代码。 – ekhumoro

回答

0

这个问题似乎与SSL有关。我仍然不知道确切的问题是什么,但它是由固定:

  1. 卸载PySide的巨蟒版本(1.2.1),并与PIP(1.2.4)安装。看起来Anaconda构建从根本上被打破,因为类的各种属性在它们应该存在并且存在不可解析的循环依赖时不存在。

  2. downloading openSSL (lite)并将2个DLL(ssleay.dll和libeay.dll)放置在程序运行的目录和环境/ Library/bin中。它自己的一个都不起作用。这部分的积分是this question

相关问题