Я пытаюсь загрузить страницу в веб-просмотре, чтобы я мог взаимодействовать с ней и затем анализировать некоторые данные. Страница, с которой я хочу взаимодействовать, и анализ должны быть созданы с начальной страницы (https://www.public.nm.eurocontrol.int/PUBPORTAL/gateway/spec/ ). Моя проблема даже в том случае, если окно создания откроет страницу, на которой он почти ничего не загрузит.
Ссылка, открывающая страницу, которую я хочу открыть (если вы прокрутите вниз вправо), называется STRUCTURED EDITOR:
Мой сценарий:
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtWebKitWidgets import QWebView , QWebPage
from PyQt5 import QtWebKit
from PyQt5.QtWebKit import QWebSettings
from PyQt5.QtNetwork import *
import sys
import time
class MYview(QWebView):
def __init__(self, parent=None):
super(MYview, self).__init__(parent)
def createWindow(self,wintype):
print("aaaaaaaaaaaaa")
self.webView = MYview()
time.sleep(2)
self.webView.page().settings().globalSettings().setAttribute(QWebSettings.JavascriptCanOpenWindows, True)
self.webView.page().settings().globalSettings().setAttribute(QWebSettings.PluginsEnabled, True)
self.webView.page().settings().globalSettings().setAttribute(QWebSettings.JavascriptEnabled, True)
self.webView.page().settings().globalSettings().setAttribute(QWebSettings.LocalContentCanAccessRemoteUrls, True)
self.webView.page().settings().globalSettings().setAttribute(QWebSettings.LocalContentCanAccessFileUrls, True)
self.webView.page().settings().globalSettings().setAttribute(QWebSettings.DeveloperExtrasEnabled, True)
self.webView.loadFinished.connect(self._on_load_finished)
return self.webView
def javaScriptConsoleMessage(self, msg, line, source):
print ('%s line %d: %s')%(source, line, msg)
def _on_load_finished(self, ok):
print(self.webView.url())
self.webView.loadFinished.disconnect(self._on_load_finished)
class MainForm(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(MainForm, self).__init__(parent)
self.tabWidget = QtWidgets.QTabWidget(self)
self.setCentralWidget(self.tabWidget)
self.loadUrl(QtCore.QUrl('https://www.public.nm.eurocontrol.int/PUBPORTAL/gateway/spec/'))
def loadUrl(self, url):
self.view = MYview()
self.view.page().settings().globalSettings().setAttribute(QWebSettings.JavascriptCanOpenWindows, True)
self.view.page().settings().globalSettings().setAttribute(QWebSettings.PluginsEnabled, True)
self.view.page().settings().globalSettings().setAttribute(QWebSettings.JavascriptEnabled, True)
self.view.page().settings().globalSettings().setAttribute(QWebSettings.LocalContentCanAccessRemoteUrls, True)
self.view.page().settings().globalSettings().setAttribute(QWebSettings.LocalContentCanAccessFileUrls, True)
self.view.page().settings().globalSettings().setAttribute(QWebSettings.DeveloperExtrasEnabled, True)
self.view.loadFinished.connect(self._on_load_finished)
self.view.linkClicked.connect(self.on_linkClicked)
# self.view.page().setLinkDelegationPolicy(QWebPage.DelegateAllLinks)
self.tabWidget.setCurrentIndex(self.tabWidget.addTab(self.view, 'loading...'))
self.view.load(url)
def _on_load_finished(self, ok):
self.view.loadFinished.disconnect(self._on_load_finished)
index = self.tabWidget.indexOf(self.sender())
self.tabWidget.setTabText(index, self.sender().url().host())
self.view.page().mainFrame().evaluateJavaScript("document.getElementsByTagName('button')[0].click();")
def on_linkClicked(self, url):
print('link clicked to {}'.format(url))
self.loadUrl(url)
def javaScriptConsoleMessage(self, msg, line, source):
print ('%s line %d: %s')%(source, line, msg)
def main():
app = QtWidgets.QApplication(sys.argv)
form = MainForm()
form.show()
app.exec_()
if __name__ == '__main__':
main()
Некоторые страницы, которые еще открыты, открываются просто отлично, но все страницы необходимо перенести с основного сайта, не делайте Может быть, это как-то связано с маршрутизацией, но я не могу понять это