問題タブ [phantomjs]
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.
javascript - ドキュメントとストアからすべての画像をローカルに取得する方法
私の目標は、ドキュメントからすべての画像を取得し、150x150px より大きいすべての画像をローカルにダウンロードすることです。
前の手順で取得した URL からファイルを取得することに行き詰まっています。バグのあるコード行は次のとおりです (完全なコード - 最後に):
コンソールから実行すると、エラーなしで fs.copy() でハングアップします。
私が理解できるように、 fs.copy() は、すべての適切な引数を設定しても (--load-images=yes、--local-to-remote-url-access=yes)、リモート URL では機能しません。私は正しいですか、それともcopy()で間違ったことをしましたか? Webkit のキャッシュから直接ファイルを取得する方法はありますか?
最新のphantomjsバージョンとubuntuサーバーを入手しました。
あらゆる種類の助けをいただければ幸いです。
完全なスクリプト コード:
javascript - PhantomJS で Ant から非同期 QUnit テストを実行する
PhantomJSを使用して、Ant ビルド スクリプトから一連の非同期 QUnit テストを実行しようとしています。私が持っているものは機能しているようですが、それを達成するためのより良い方法があるはずです。
PhantomJS のロード時に実行されるスクリプト (簡略化) は次のとおりです。
これにより、テストを含むファイルがロードされます ( testrunner.html
)。PhantomJSevaluate
メソッドを使用して、読み込まれたページのコンテキストでコードを実行します。そのコードは、イベント ハンドラーを QUnitdone
イベントにバインドします。イベント ハンドラでは、単に を呼び出すだけconsole.log
です。
PhantomJS はデフォルトでは呼び出しに対して何もしないconsole.log
ので、イベント ハンドラーも PhantomJSonConsoleMessage
イベントにバインドしました。イベント ハンドラーのconsole.log
呼び出しが実行されると、イベントがトリガーされます。コンソール メッセージが特定の文字列と一致する場合、テストの実行が終了したことがわかります。次に、失敗した単体テストの数に等しい終了コードで PhantomJS を終了できます (これは、ビルドのこの部分が成功したかどうかを判断するために Ant スクリプトによって使用されます)。QUnit.done
onConsoleMessage
私の質問は、単体テストの実行がいつ終了したかを知るためのより良い方法はありますか?
phantomjs - PhantomJS を制御して、ある種のリソースのダウンロードをスキップするにはどうすればよいですか?
phantomjs には設定 loadImage があり、
もっと欲しいけど、
ある種のリソースのダウンロードをスキップするようにphantomjsを制御するにはどうすればよいですか?
cssなど...
=====
朗報: この機能が追加されました。
https://code.google.com/p/phantomjs/issues/detail?id=230
要旨:
iframe - page.contentはどのように機能しますか?
広告などの動的コンテンツが読み込まれた後、HTMLとWebサイトのスナップショットを取得しようとしています。
レンダリング機能を使用すると、ページにiframe内のコンテンツが表示されますが、コンテンツをファイルに保存すると、iframeが複製されたり、消えたりするなどの奇妙なことがあります。
したがって、完全なDOM(jsやiframeなどのすべての動的コンテンツが既にロードされている)を保存する方法があるかどうか疑問に思っています。
これが私のコードです:
これがサンプル画像出力です(iframeが赤で強調表示されています):
http://dl.dropbox.com/u/123181/prodigy.msn.com.png
HTML出力の例を次に示します。
javascript - PhantomJS は Cookie をサポートしていますか?
PhantomJS はCookieをサポートしていますか? はいの場合、API の詳細はどこで確認できますか?
しばらく検索してもわかりません。
jasmine - Windows 2008 R2 で PhantomJs.exe が「'std::bad_alloc' のインスタンスをスローした後に呼び出された終了」エラーをスローする
PhantomJs.exe を使用して、コマンド ラインから Jamsine 仕様を実行しようとしています。ここに私のコマンドラインがあります
これは、spec runner html ファイルがあるフォルダーから実行しています。上記のコマンドは次のエラーをスローします
phantomjs グループのhttp://code.google.com/p/phantomjs/issues/detail?id=365を既に確認しましたが、.net のバックグラウンドを持つ私のような人にとってはあまり役に立ちません。
これまでのところ、PhantomJs のバージョン 1.3.0 が問題なく動作することがわかりました。
node.js - Phantom.js がフィールドに入力し、[送信] をクリックすると、次のページにアクセスできなくなります
私はphantom.jsから始めました(ところで私は恋をしています)。ヘッドレス ブラウザを php 管理パネルに移動させ、ユーザー名とパスワードでログインさせようとしています。ログイン後にリダイレクトされるページから、div タグからテキストを取得したいと考えています。
これまでのところ、フィールドに問題なく入力し、クリック イベントを作成し、div タグの DOM 部分へのアクセスを見つけて、inner.Text を取得することさえできました。
私にとって唯一欠けている部分は、phantom.js がログインしてページのコンテンツを変更するボタン (この場合はログイン ボタン) をクリックしたときに何をすべきかということです。.click(); の後の処理方法がわかりません。イベント。
これは私がこれまでに作成したコードです (ちなみに、これは開始するのに適した方法です...)
それの後に来るページで実行したいコード
したがって、残りの唯一の問題は、リダイレクトを処理し、他のページでスクリプトを起動する方法です。
ありがとう、
javascript - PhantomJSとpjscrape-いくつかの複数のURLで失敗する
概要
PhantomJSとpjscrapeフレームワークを使用して非常に基本的なスクレーパーを作成しようとしています。
私のコード
使用されるURL配列
この最初の配列は機能せず、3番目または4番目のURLの後で失敗します。
この2番目のアレイは機能し、同じサイトからのものであっても失敗しません。
問題
productURLs
PhantomJSを反復処理する場合、page.open
オプションのコールバックは自動的に失敗を想定します。ページの読み込みが完了していない場合でも。
HTTPデバッガーの実行中にスクリプトを起動し、PhantomJSがページの読み込みエラーを報告した後もHTTPリクエストが実行されていたため、これを知っています。
ただし、。を指定して実行すると、コードは正常に機能しcategoriesURLs
ます。
仮定
- 上記のURLはすべて有効です
- PhantomJSとpjscrapeの両方の最新バージョンを持っています
可能な解決策
これらは私がこれまでに試した解決策です。
- 画像の読み込みを無効にする
page.options.loadImages = false
- 生成されたエラーは失敗であり、タイムアウトの失敗ではなかったため
timeoutInterval
、これより大きな設定はpjs.config
明らかに役に立ちませんでした。page.open
何か案は?
javascript - PhantomJS での Firebug-Lite の注入と使用
PhantomJS を使用して Web ページに Firebug と jQuery を挿入しようとしていますが、それらにアクセスできません。
ページに他の JS を追加するために、PhantomJS の両方のメソッドを試しました: page.injectJs() と page.includeJs。
includeJs から返されたものを取得できません (ドキュメントを読んで取得できるとは思っていませんでした)。
injectJs() を使用して、firebug-lite および jQuery 関数またはオブジェクト ( $ および inspect() など) を使用しようとすると、それらが未定義である、または変数が見つからないというエラーが表示されます。
これは私の完全なスクリプトです。ここでも確認できます: http://piratepad.net/XTPefXOB4o
これは私の出力です:
javascript - リンクをクリックするか、ページ上の機能を実行する PhantomJ
私は PhantomJs に慣れてきたばかりで、今のところ本当にクールです。
サイトをクロールして、サイト上の製品に関するデータを取得しようとしています。各製品ページは、製品のデフォルトの色が表示された状態で読み込まれます。色見本をクリックすると、関数を実行して新しい色を入れ替えます。クリック可能な各色見本要素は次のようになります。
getColor は、その色のサムネイルと価格を更新します。id は使用可能な色 (swatch_0、swatch_1 など) ごとに増分し、getColor に渡される引数も同様に増分します。PhantomJs を使用して各色を反復処理し、それぞれに関連するデータを取得したいと考えています。
ページをロードし、jQuery をロードし、最初にロードされた色のデータを取得できましたが、クリック イベントを実行することはできません。
ここに私がしようとしているものがあります:
これは私に与えます:
他のコードは実行されません。また、次のように jQuery を使用せずにイベントを発生させようとしました。
そして、関数を直接実行します:
そして、同じ出力が得られます。どんな助けでも大歓迎です。