2017-01-23 2 views
0

저는 Pyside를 사용하여 웹 페이지의 JavaScript 생성 HTML을 렌더링하고 웹 스크랩에 해당 HTML을 사용하려고합니다. 내가 this quick example을 사용하기 시작했지만 그 결과는 매우 일치하지 않습니다.QtWebkit for python이 대부분의 웹 페이지를로드하지 않는 이유는 무엇입니까?

일부 페이지는 완벽하게 정상적으로 작동하지만 다른 페이지는 무한히 끊어지는 문제가 있습니다. 그리고 나는 몇 초 후에 포기하는 것에 대해 이야기하는 것이 아니라, 여러 번 여러 시간 동안 스크립트를 실행하게하고 진행이 이루어지지 않도록했습니다. this answer에 주어진 페이지처럼,

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' 

이 페이지는 작동하지만, 대부분의 사람들은 ('https://www.google.ca/', 'https://webscraping.com')는하지 않는 다음과 같이

내 현재 코드입니다.

페이지를로드하려면 어떻게해야합니까?

+0

해당 웹 페이지를로드하는 데 문제가 없으므로 문제가 결국 해결되어야합니다. 그래서 이것은 당신이 추가 할 몇 가지 중요한 새로운 정보가 없다면,이 주제에 관한 당신의 다른 질문과 중복되는 것일뿐입니다. [urllib2] (https://docs.python.org/2/library/urllib2.html#module-urllib2)와 같은 다른 방법을 사용하여 해당 URL을로드하려고 시도 했습니까? – ekhumoro

+0

예 urllib2를 사용하여로드 할 수 있으며 제대로 작동합니다. 제가 언급 한 URL은 절대로로드하지 않거나 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) 두 개의 dll (ssleay.dll 및 libeay.dll)을 프로그램이 실행되는 디렉토리와 환경/Library/bin에 모두 배치하십시오. 둘 중 하나가 작동하지 않습니다. 이 부분에 대한 크레딧은 this question입니다.

관련 문제