2016-10-01 6 views
12

私はPyQt5を使用してWebページをスクラップしています。これはhttp:// URLには効果的ですが、https:// URLには効果がありません。javascript WebページのPythonスクレイピングがhttpsページでのみ失敗する

私のスクリプトの関連部分は以下の通りです:セキュアなページのために

class WebPage(QWebPage): 
    def __init__(self): 
     super(WebPage, self).__init__() 

     self.timerScreen = QTimer() 
     self.timerScreen.setInterval(2000) 
     self.timerScreen.setSingleShot(True) 
     self.timerScreen.timeout.connect(self.handleLoadFinished) 

     self.loadFinished.connect(self.timerScreen.start) 


    def start(self, urls): 
     self._urls = iter(urls) 
     self.fetchNext() 

    def fetchNext(self): 
     try: 
      url = next(self._urls) 
     except StopIteration: 
      return False 
     else: 
      self.mainFrame().load(QUrl(url)) 
     return True 

    def processCurrentPage(self): 
     url = self.mainFrame().url().toString() 
     html = self.mainFrame().toHtml() 

     #Do stuff with html 
     print('loaded: [%d bytes] %s' % (self.bytesReceived(), url)) 

    def handleLoadFinished(self): 
     self.processCurrentPage() 
     if not self.fetchNext(): 
      qApp.quit() 

、スクリプトが空白のページを返します。戻ってくる唯一のHTMLは<html><head></head><body></body></html>です。

私は少し迷っています。保護されたURLを処理する際に欠けている設定がありますか?

+0

「セキュリティで保護されたページの場合、スクリプトは空白のページを返します」という意味ですか? – Adam

+0

ああ、そうです。ありがとう、私はそれを見つけたはずです。 – samg86

+4

@ samg86。私はこれを再現することはできません。問題の原因となるいくつかのサンプルの安全なURLを入力してください。 – ekhumoro

答えて

0

はPyQt4でテストされ、正常にあなたのコードは、HTTPのページで正常に動作しますが、HTTPSでは動作しません、私の意見では、それが原因SSLの問題にすることができるのでHTTPS

import sys 
from PyQt4.QtGui import QApplication 
from PyQt4.QtCore import QUrl 
from PyQt4.QtWebKit import QWebView 

class Browser(QWebView): 
    def __init__(self): 
     QWebView.__init__(self) 
     self.loadFinished.connect(self._result_available) 

    def _result_available(self, ok): 
     frame = self.page().mainFrame() 
     print(frame.toHtml()) 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    view = Browser() 
    view.load(QUrl('https://www.google.com')) 
    app.exec_() 
0

でページを開きました。

だから、あなたのPyQt5バージョンがSSLをサポートしていることをダブルチェックしてください...(あなたはより多くのインストール、ダウンロードするための情報の相対的およびセットアップOpenSSLを見つけることがhere

あなたがダウンロードした後に行う必要があるすべてSSLライブラリは、 をQtがこれらのopenSSLライブラリがどこにあるかを見つけることを保証することです。

どのOSを使用しますか? PyQt5はSSLをサポートしてビルドされましたか? Opensslがインストールされていますか?

1

あなたは窓にしている場合は、これを試してください。 Build PyQt5 on Windows with OpenSSL support?

あなたは、私は私のプロジェクトのための美しいスープを使用しているし、それが魅力のように働いたBeautiful SoupまたはScrapy.

を使用して考えがあります。 SSLサポートもあります。

関連する問題