問題タブ [qwebkit]
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.
c++ - C++ を使用した HTML の解析 (できれば Qt を使用)
HTML からすべての URL を抽出するために C++ で HTML を解析しようとしています (URL は href および src 属性内にある可能性があります)。
Webkit を使用して重い作業を実行しようとしましたが、何らかの理由で HTML でフレームをロードすると、生成されたドキュメントがすべて間違っています (Webkit に Web からページを取得させると、生成されたドキュメントは問題ありませんが、Webkit もダウンロードします)。すべての画像、スタイル、およびスクリプト。私はそれを望んでいません)
これが私がやろうとしたことです:
私は何を間違っていますか?Qt で HTML を解析する簡単な方法はありますか? (または他の軽量ライブラリ)
qt - qwebview の背景画像、色、フォントの色を変更する方法
WebView の背景画像、色、フォントの色を変更したい。setBackgroundRole メソッドを試してみましたが、色がほとんどありません。欲しい色がない。また、フォントの色と背景画像を設定する方法がわかりません。この問題を解決するためのアイデアはありますか?
qtwebkit - QtWebKit QApplication を 2 回呼び出す
Flask からスクレイピング クラスを呼び出しています。2 回目に新しい Webkit() クラス (QApplication) をインスタンス化すると、Flask アプリが終了します。
Qt GUI アプリを複数回再実行して、「外側の」アプリをシャットダウンしないようにするにはどうすればよいですか?
さらに明確にすると、Qt はイベント ドライブであり、QApplication.quit() を呼び出すと、イベント ループだけでなく Python も閉じます。残りのコードの実行を続行することはありませんが、quit() を呼び出さないでください。
qt - QHttp/QtWebKitがページをキャッシュしないようにする方法
最近、オンラインで保存されているtxtファイルを変更できることがわかりました。その後、 QHttpを使用してそれをフェッチすると、以前のバージョンがまだ取得されています。私のコードもQtWebKitを使用していたので、これはどういうわけか問題に関連しているのでしょうか?それとも、キャッシュを防ぐ設定が不足しているだけですか?
(私はWindows7でQt4.7.3を使用しており、Visual Studio 2010アドインでコンパイルしています)
QtWebKitが何かをキャッシュしないようにするために次のことを行っています-
txtファイルをロードするために使用しているコードは次のとおりです-
これに対応するために使用しているスロットは-
しかし、インターネットからtxtファイルをフェッチすると、どこかに/何らかの形でキャッシュされているように見えます。txtファイルにどのような変更を加えても、コードを実行すると、元のファイルがバッファリングされます。
OrcunCの提案(下記)を試しましたが、これにより、txtファイルの内容ではなく空の文字列が返されます-
また、以下に示すように別の方法で実装しようとしましたが、txtファイルがキャッシュされている場合と同じ結果が得られました。完成したスロットのQNetworkReplyをboolfromCache= reply-> attribute(QNetworkRequest :: SourceIsFromCacheAttribute).toBool()でチェックしてもfalseが返されました。
私は今、私のウィットエンドにいるので、正しい方向に私を向けてくれる人にとても感謝しています。
javascript - QWebFrame addToJavaScriptWindowObject()オブジェクトはJavascriptで定義されていません
私は再びC++とQtを掘り下げ始め、WebKit Javascript/Qtバインディングをいじくり回してきました。QObjectサブクラスがJavascript側で「未定義」であることを除いて、すべての可動部分が機能しています。これが私が問題を抱えている簡単なテストアプリです:
私のメインウィンドウの実装:
Hello.cpp
Hello.h
上記のindex.htmlファイルは単純なalert(Hello.say())
呼び出しを行いますが、実行typeof Hello
すると未定義になります。
私はC++に少し錆びていて、Qtにかなり慣れていないので、これは間違いではないと確信していますが、困惑しています。
javascript - QWebKit - ページの JavaScript 関数を実行しますか?
基本的に、ルーターの設定に入り、チェックボタンを設定し、ページ上の関数を
すべてプログラム
で呼び出したいと考えています。
これを行うためのすべてのJavaScriptを知っており
、Google Chromeコンソールから実行できます。
QWebKit を使用して構文的に実行できます
が、実際のページは影響を受けません。
(はい、このコードを使用するには、ルーターの設定に既にログインしている必要があります)
アラートを使用してテストできるため、JavaScript が実行されていることがわかります。
ただし、ルーターの html "checked()" 関数またはチェックボックスは実行/変更されません。
私は実際にページを操作しているわけではなく、コピーのようです。
ここで私は大きな初歩的なミスを犯していますか?
仕様:
python 2.7
PyQt4
QWebKit
Windows 7
qt4 - シグナルQWebPage::loadFinished(bool)は2回戻りますか?
QWebPage :: loadFinished(bool)シグナルで問題が発生しました。2回コールバックしますが、これは正常ですか?(リンクはまったく続きません。たとえば、HTTPステータス302)。
次のコードを考えてみましょう。すべてが問題を引き起こす可能性があります。そのスロット内に別のリンクを読み込もうとしていますが、これは問題になりますか?
スロットでqDebug() << thisUrl;
毎回実行すると、3回表示されます。これは通常の、URL用に1つ、URL用に2つで、最後の2つのリンクはまったく同じです。loadFinished(bool)
XXX
YYY
qt - QWebPage の代わりにバックグラウンドで HTML ページを解析および変更するために QTextBrowser を使用する価値はありますか?
C++ と Qt を学習するという純粋な目的のために、ローカル ディレクトリから HTML ファイル (数百まで) を読み取り、それらを変更して、別のローカル ディレクトリに書き戻す小さな Qt ベースのプログラムを作成しています。
私の最初の試みは、 がQWebPage
提供する HTML 解析機能を使用することでしたQWebElement
。ただし、メモリリークが原因で深刻な問題が発生しますQWebPage
(これは、正しい方法で使用していないことが原因である可能性が非常に高いですが、これは別のトピックであり、この質問の一部ではありません)。
今のところ、私は GUI を使用していません。後で使用するつもりですが、プログラムのこの部分は決して GUI の一部ではなく、バックグラウンドのどこかにあります。したがって、より軽量に見えるby
の使用法を置き換えることを考えました。しかし、Qt-API には の解析関数に似た関数が見つかりませんでした。これまでのところ、私のコードは に依存しており、最後に.QWebPage
QTextBrowser
QWebElement
QWebElement::findFirst()
QWebElement::nextSibling()
QWebElement::takeFromDocument()
QTextBrowser
では、 HTML パーサーとして実装 (または使用) する可能性はほとんどないのでしょうか? たぶん「ベストプラクティス」でさえありますか?
JavaScript は HTML ページにインライン化されている可能性が非常に高いですが、評価する必要はありません。CSS は問題の HTML ページで頻繁に使用されていますが、スタイリングに CSS を使用する必要もありません。ID または CSS クラスに基づいて特定の HTML ブロックを (表の行として) 取得する必要があるだけです。
PS: 純粋な Qt を使用した実行可能で合理的な試みがすべて失敗した場合に備えて、現在の C++ HTML 解析ライブラリを使用したいと考えています。
PPS: それらを見て知るためだけに、私はまた、並外れた解決策にたどり着きたいと思います. ;-)
これが現在のコードの一部で、.html を使用して HTML ページの特定の部分を解析して削除しますQWebElement
。reportPage
はQWebPage
オブジェクトです。
c++ - QWebFrame::setHtmlの後にクラッシュする
メインスレッドのドキュメントノードにHTMLコンテンツを動的に設定しようとしています。
これらの行は正常に実行されますが、その後、コールスタックで読み取りアクセス違反が発生します
問題のグーグルまたはスタックオーバーフローは成功しませんでした。他の誰かが同じ問題を抱えていましたか?QWebFrame :: setHtmlの適切な使用法は何ですか?
ありがとうございました
[解決済み]この問題は、メインスレッドからではなくQWebFrame::setHtmlを呼び出しているときに発生します。
python - QWebView/QWebPage をデフォルトのセリフ フォントにするにはどうすればよいですか?
PyQt4 を使用して QWebView を作成し、それを setHtml() メソッドでロードします。HTML はほとんどの点で正しく表示されますが、常にデフォルトのサンセリフ フォントが使用されます。
同一の HTML プレーン テキストが Firefox などの外部ブラウザによって読み込まれると、デフォルトのセリフ フォントで表示されます。webview も同じようにしたいと思います。
QWebView、QWebPage、および QWebSettings のドキュメントを読みましたが、ブラウザーの設定に匹敵するデフォルトの「標準」または「プロポーショナル」フォントを設定する方法がわかりません。QStyleSheets を見ましたが、QWebView/WebPage には適用されないようです。