2016-10-01 17 views
12

मैं वेब पेजों को स्क्रैप करने के लिए PyQt5 का उपयोग कर रहा हूं, जो http: // URL के लिए बहुत अच्छा काम करता है, लेकिन https: // URL के लिए बिल्कुल नहीं।जावास्क्रिप्ट वेब पेजों के पाइथन स्क्रैपिंग केवल 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><head></head><body></body></html> है।

मुझे कुछ नुकसान हुआ है। क्या ऐसी सेटिंग है जो सुरक्षित यूआरएल को संभालने से संबंधित है?

+0

क्या आपका मतलब है "सुरक्षित पृष्ठों के लिए, स्क्रिप्ट एक खाली पृष्ठ देता है"? – Adam

+0

आह, हाँ मैं करता हूं। धन्यवाद, मुझे यह देखना चाहिए था। – samg86

+4

@ samg86। मैं इसे पुन: उत्पन्न नहीं कर सकता। कृपया कुछ नमूना सुरक्षित यूआरएल प्रदान करें जो समस्या का कारण बनते हैं। – ekhumoro

उत्तर

0

PyQt4 के साथ परीक्षण किया और सामान्य रूप से 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

अपने कोड HTTP पेज के साथ ठीक काम करता है के रूप में के साथ पृष्ठों खोला है, लेकिन HTTPS साथ काम नहीं करता, मेरी राय में यह SSL समस्या के कारण हो सकता है।

तो, कृपया देखें कि आपकी PyQt5 संस्करण एसएसएल समर्थन दोगुना ... (आप पा सकते हैं और, डाउनलोड करने के लिए स्थापित अधिक जानकारी रिश्तेदार सेटअप openssl here)

सभी है कि आप डाउनलोड करने के बाद क्या करने की जरूरत एसएसएल पुस्तकालय सुनिश्चित करने के लिए है कि क्यूटी यह पता लगा सकता है कि ये ओपनएसएसएल पुस्तकालय कहां स्थित हैं

आप किस ओएस का उपयोग करते हैं? पीईक्यूटी 5 एसएसएल समर्थन के साथ बनाया गया था? Openssl स्थापित है?

1

आप विंडोज पर हैं, तो यह प्रयास करें: Build PyQt5 on Windows with OpenSSL support?

आप Beautiful Soup या Scrapy.

मैं अपने प्रोजेक्ट के लिए ब्यूटीफुल सूप का इस्तेमाल किया है का उपयोग करते हुए माना जाता है और यह एक आकर्षण की तरह काम किया है। इसमें एसएसएल समर्थन भी है।

संबंधित मुद्दे

 संबंधित मुद्दे