PySide (Qt for Python) は、Qt(キュート)の Python バインディングで、GUI などを構築するためのクロスプラットフォームなライブラリです。Linux/X11, macOS および Microsoft Windows をサポートしています。配布ライセンスは LGPL で公開されています。
以前、当ブログで紹介した、QWebEngineView で表示したサイトの HTML を取得するサンプル [1] について、より簡単な方法が判ったので改定します。
今回のテーマ
- QWebEngineView で読み込んだ URL は、QWebEnginePage に表示されますが、ここに表示されたウェブサイトの HTML のソースを取得します。[改訂版]
なお、本サンプルで使用しているウェブサイトは、下記を利用しています。
下記の OS 環境で動作確認をしています。
![]() |
Fedora Workstation 39 | x86_64 |
Python | 3.12.1 | |
PySide6 | 6.6.2 |
サンプルを以下に示します。このサンプルは、指定した URL を表示して、そのソースを標準出力するという単純なものです。
HTML ソースの内容取得には、QWebEnginePage の toHtml メソッドを利用しています。当初、マニュアル(参考サイト [3])でこのメソッドの説明を読んでも使い方がピンとこなかったので、用法の追求を後回しにしてしまいました。
qt_webenginepage_2.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# coding: utf-8 | |
import sys | |
from PySide6.QtCore import QUrl | |
from PySide6.QtWebEngineWidgets import QWebEngineView | |
from PySide6.QtWidgets import QApplication | |
class Example(QWebEngineView): | |
def __init__(self, url: QUrl): | |
super().__init__() | |
self.loadFinished.connect(self.on_load_finished) | |
self.resize(1000, 800) | |
self.load(url) | |
self.page().titleChanged.connect(self.setWindowTitle) | |
def on_load_finished(self, flag: bool): | |
if flag: | |
self.page().toHtml(self.print_html) | |
@staticmethod | |
def print_html(html: str): | |
print(html) | |
def main(url: QUrl): | |
app = QApplication() | |
ex = Example(url) | |
ex.show() | |
sys.exit(app.exec()) | |
if __name__ == '__main__': | |
url_init = QUrl('https://www.ueno-panda.jp/') | |
main(url_init) |
このサンプルの実行例を以下に示しました。
qt_webenginepage_2.py の実行例
表示された HTML の内容が標準出力されます。
qt_webenginepage.py の出力例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> <html xmlns="http://www.w3.org/1999/xhtml"><head> <!-- Google tag (gtag.js) --> <script type="text/javascript" async="" src="https://ssl.google-analytics.com/ga.js"></script><script async="" src="https://www.googletagmanager.com/gtag/js?id=G-ZML74SB67X"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-ZML74SB67X'); </script> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta name="keywords" content="パンダ,ジャイアントパンダ,上野パンダ,上野動物園,上野,保護,サポート基金,ZOONET"> <meta name="description" content="東京動物園協会の運営する「UENO-PANDA.JP」は、上野動物園のジャイアントパンダを紹介する公式サイトです。ジャイアントパンダの個体情報をはじめ、上野動物園へのアクセス、開園時間、園内マップ、その他ジャイアントパンダ保護サポート基金等、さまざまな情報を掲載しています。"> <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0"> <link rel="shortcut icon" href="//www.ueno-panda.jp/favicon.ico" type="image/x-icon"> <link rel="icon" href="//www.ueno-panda.jp/favicon.ico" type="image/x-icon"> <title>上野動物園のジャイアントパンダ情報サイト「UENO-PANDA.JP」</title> : : (以下省略)
参考サイト
- bitWalk's: QWebEnginePage から HTML ソースを取得する ~ PySide6 [2024-01-08]
- QWebEngineView - Qt for Python
- QWebEnginePage - Qt for Python

にほんブログ村
#オープンソース

0 件のコメント:
コメントを投稿