2017-01-23 53 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

相關問題