問題タブ [qwebpage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1581 参照

python - PyqtはDOMをファイルに保存します

このコードが機能しないのはなぜですか? このページで js を実行した後に dom を保存し、GUI なしで qt を使用したい。私の英語でごめんなさい。

0 投票する
1 に答える
3361 参照

qt - QWebPage で使用されている QNetworkReply からデータを読み取る方法は?

QWebPageWeb ページとそのすべてのリソースをダウンロードするために使用します。同時に、このプロセス中に Qt によってダウンロードされる生データを保持したいと思います。QNetworkReply信号からデータを読み取ることによってこれを行うことvoid QNetworkAccessManager::finished(QNetworkReply * reply) は、データ自体が既に読み取られている可能性があるため、良い解決策ではありませんQWebPage。それの訳は

QNetworkReply はシーケンシャル アクセスの QIODevice です。つまり、データがオブジェクトから読み取られると、デバイスによって保持されなくなります。

詳しい説明通りですQNetworkReply

ただし、オーバーライドされたメソッドでQWebPageカスタムを使用するように構成できますQNetworkAccessManagercreateRequest

正しい解決策は、プロキシを作成してメソッドQNetworkReplyで返すことだと思います。createRequestこのプロキシは、元の場合と同様に、応答からデータを読み取ることができるようにする必要がありますQNetworkReply(そのため、QWebPageデータを読み取ることができます) QWebPage。言い換えれば、の基底クラスにはティーが必要です。QNetworkReplyIODevice

このプロキシの書き方

0 投票する
3 に答える
7071 参照

qt - QWebPage に特定の種類のリソースを読み込まないように指示する方法は?

QWebPagejs、css、png などの特定の種類のリソースを読み込まないようにするにはどうすればよいですか?

0 投票する
2 に答える
342 参照

qt4 - QWebPageに関連付けられたHTMLデータを表示する方法

QWebPageを使用してWebサイトを取得するプログラムを作成しました。HTML、CSS、JavascriptなどのWebページに関連付けられたデータを取得する方法はありますか?Firefoxのview-sourceに似ています。

いくつかのオプションがあるようです。1つの方法は、QNetworkReplyプロキシを作成してデータをコピーすることですが、これはバグが発生しやすいようです。別の方法はキャッシュを操作することですが、これは予測できないようです。他に可能な方法はありますか?

0 投票する
1 に答える
2186 参照

python - PyQt: 匿名プロキシで QWebPage を使用する方法

これは私を夢中にさせています。

QWebPage に URL を表示したいのですが、匿名プロキシを通過させたいのです。

コード

ヘッダーを通知するテストページを呼び出します(phpサーバー上で、$_SERVERを調べます)。remote_addrは常にプロキシIPではなく、私のIPです。

どうしたの?

手伝って頂けますか?私は PyQt 4.8.3 を使用しています。

0 投票する
1 に答える
1040 参照

c++ - QWebPage、MIME タイプの取得

QWebPage を使用して現在のページの MIME タイプを取得する方法を知りたいです。また、可能であれば、HEAD リクエストを使用してこれを実行できるようにしたいので、正しい MIME タイプでない場合はページ全体をダウンロードしないでください。何か案は?

0 投票する
1 に答える
964 参照

qt - QtでQWebViewコンテンツを管理するにはどうすればよいですか?

QWebViewオブジェクトがWebページをロードしています。ページからメモリに画像を保存する必要があります。画像のURLは動的ですが、正規表現に従います。

QWebViewでそれを行うにはどうすればよいですか?

0 投票する
1 に答える
1487 参照

qt - QWebPage でリンクを同じタブで強制的に開く

Qt で 1 つのタブのブラウザーを使用していますが、問題が発生しました。

外部 Web サイトにつながる Web 上のリンクは、新しいタブで開くように設定されています (taget='_blank' を使用)。ただし、私のブラウザにはタブが 1 つしかないため、これらのリンクは非アクティブになっています。

JavaScript (QWebFrame::eveluateJavaScript) を挿入することで、リンクを同じタブで強制的に開くことができると思いますが、それは非効率的な解決策のようです。

すべてのリンクを強制的に同じタブ/ウィンドウで開くようにする Qt のネイティブな方法はありますか?

編集:

loadFinished(bool) を再実装することでネイティブな方法を思いつきました:

もっと良い方法があれば、私はそれを見てうれしいです。

0 投票する
1 に答える
874 参照

python - QWebPageのshouldInterruptJavaScriptをPySideでオーバーライドする

PySide.QtWebKit.QWebPage.shouldInterruptJavaScript()スロットをオーバーライドして、JavaScript割り込み要求を黙って無視したいと思います。独自のタイムアウトタイマーを設定していて、デフォルトのメッセージダイアログは必要ありません。

PySideドキュメントの引用:

バイナリ互換性の制約があるため、この関数は仮想ではありません。PySide.QtWebKit.QWebPageサブクラスで独自の実装を提供する場合は、代わりにサブクラスでQWebPage.shouldInterruptJavaScript()スロットを再実装します。QtWebKitはスロットを動的に検出し、それを呼び出します。

これは私が書いたサンプルコードですが、shouldInterruptJavaScript()メソッドが呼び出されることはありません。PhantomJSとウェブスクレイピングのオープンソースプロジェクトで使用されているのと同じコードが表示されます。

Python 2.7.1、PySide 1.0.2、Qt4.7.2を使用しています。現在、テストできるように最新のPySideを構築していますが、最近のリリースノートやバグレポートでshouldInterruptJavaScriptについて何も見つかりません。

サブクラスでshouldInterruptJavaScriptを再実装する特別な方法はありますか?

0 投票する
2 に答える
872 参照

python - PySide QWebPage で不規則な「Invalid Signal signature」エラーが発生する

PySide を使用して、Web ページの読み込みとスクリーンショットの作成を自動化するアプリケーションを作成しています (いいえ、既存のソリューションのいずれも使用できません)。アプリの一部は URL のリストを取得し、新しいQWebPage オブジェクトを使用して各 URL を順番に読み込みます。ページが読み込まれた後、スクリーンショットが撮影され、QWebPage オブジェクトが削除されます。

時々、十分な数の実行があると、RuntimeError 例外として PySide から次のエラーが発生します。

最初の行は (おそらく Qt によって) STDERR に出力され、2 行目は Python の例外です。

loadStarted() は組み込みの QWebPage シグナルであり、私が作成したものではありません。これは 90% の確率で機能しますが、時折失敗する原因がわかりませんでした。

正直なところ、このアプリは、PySide/Qt を uWSGI で提供される Web アプリにフックするため、設計上非常に珍しいものです。これは、たとえば、QApplication イベント ループを使用するのではなく、ページの読み込みごとにローカル イベント ループを使用していることを意味します。私は Qt も Python も経験がないので、多くの間違いを犯している可能性がありますが、それらが何であるかわかりません。

この投稿が何か関係があるのではないかと思いますが、よくわかりません。

次にどこを見るべきかについての提案はありますか?

更新:信号は次のコードを介して接続されます。

MyWebPage オブジェクトは、プロセスがシャットダウンするまで削除されない別の単一の QObject インスタンスの子として作成されます。それらは、処理が完了したら page.deleteLater() を呼び出すことによって削除されます。私はローカル イベント ループを実行しているので、ローカル イベント ループを終了した後、次のように呼び出して遅延削除をトリガーします。