Сброс Python на веб-страницах javascript не удался только для страниц https
Я использую PyQt5 для очистки веб-страниц, что отлично подходит для URL http://, но не для URL-адресов https://.
Соответствующая часть моего script приведена ниже:
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()
Для защищенных страниц script возвращает пустую страницу. Единственный возвращаемый html - <html><head></head><body></body></html>
.
Я немного потерял. Есть ли параметр, который мне не хватает для обработки безопасных URL-адресов?
Ответы
Ответ 1
Если вы находитесь в окнах, попробуйте это:
Построить PyQt5 для Windows с поддержкой OpenSSL?
Рассматривали ли вы использование Beautiful Soup или Scrapy.
Я использовал Beautiful Soup для своего проекта, и он работал как шарм. Он также поддерживает SSL.
Ответ 2
протестирован с 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_()
Ответ 3
Как ваш код отлично работает с HTTP-страницей, но не работает с HTTPS, по-моему, это может быть связано с проблемой SSL.
Итак, пожалуйста, дважды проверьте, поддерживает ли ваша версия PyQt5 поддержку SSL... (Вы можете найти более подробную информацию относительно загрузки, установки и настройки openssl здесь)
Все, что вам нужно сделать после загрузки библиотек SSL, - это обеспечить что Qt может найти, где находятся библиотеки openSSL
Какую ОС вы используете?
PyQt5 был построен с поддержкой SSL?
Установлен Openssl?