为什么QtWebkit for python没有加载大多数网页?

时间:2017-01-23 21:53:22

标签: javascript python python-2.7 webkit pyside

我正在尝试使用Pyside来呈现网页的JavaScript生成的HTML,然后使用该html进行webscraping。我开始使用this quick example,但结果非常不一致。

问题是有些页面工作得很好,但其他页面无限挂起。而且我不是在谈论几秒后放弃,我让我的剧本在不同时间运行了几个小时并且没有取得任何进展。

我目前的代码如下:

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”)则不然。

如何加载这些页面?

1 个答案:

答案 0 :(得分:0)

问题似乎与SSL有关。我仍然不确定究竟是什么问题,但它是通过以下方式解决的:

  1. 卸载PySide的Anaconda版本(1.2.1)并使用pip(1.2.4)安装它。似乎Anaconda构建从根本上被打破了,因为类的各种属性在它们应该存在时并且存在无法解析的循环依赖性。

  2. downloading openSSL (lite)并将2个dll(ssleay.dll和libeay.dll)放在运行程序的目录和environment / Library / bin中。它们中的任何一个都不起作用。这部分的功劳归于this question