PyQt5 QWebEngineView - скрытие элементов страницы
У меня есть окно QMainWindow с виджетом QWebEngineView. При отображении определённой страницы мне нужно скрыть некоторые элементы на ней (заголовки, кнопки и т.д.).
Я использую BeautifulSoup, чтобы изменить html код страницы. Получить код мне удаётся только при помощи метода toHtml() страницы виджета, так как requests не даёт его полностью (Даже с заголовками запроса). После установки html при помощи setHtml() страница пропадает полностью, либо не имеет как такового оформления (чистые кнопки и виджеты), хотя никаких изменений я не проводил.
Как мне убрать элементы на странице, используя виджет QWebEngineView?
import sys
from bs4 import BeautifulSoup
from PyQt5 import QtWidgets, QtCore
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtWidgets import QApplication
class Browser(QtWidgets.QMainWindow):
htmlFinished = QtCore.pyqtSignal()
def __init__(self):
super(Browser, self).__init__()
self.MapView = QWebEngineView()
self.html = ""
self.setCentralWidget(self.MapView)
self.MapView.loadFinished.connect(self.setHtml)
def loadMap(self, url):
self.MapView.setUrl(QtCore.QUrl(url))
self.setCentralWidget(self.MapView)
def setHtml(self):
html = BeautifulSoup(self.getHtml(), 'html.parser')
# здесь страницу можно изменить
self.MapView.page().setHtml(str(html))
def callback(self, html):
self.html = html
self.htmlFinished.emit()
def getHtml(self):
self.MapView.page().toHtml(self.callback)
loop = QtCore.QEventLoop()
self.htmlFinished.connect(loop.quit)
loop.exec_()
return self.html
if __name__ == '__main__':
app = QApplication(sys.argv)
br = Browser()
br.loadMap('https://google.com')
sys.exit(app.exec_())