問題タブ [nightmare]
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.
node.js - NightmareJS スクリーンショット コールバック
このフレームワークを使用して、いくつかの URL のスクリーンショットを作成しています。スクリーンショットを撮るプロセスは非同期であり、メソッドはコールバックを実行する方法を提供しません。このスクリプトで各スクリーンショットが作成されるときにコールバックを実行したいと思います。
どうすればこれを行うことができますか?
node.js - Nightmare.js または phantom.js を使用して Web サイトをスクレイピングすると、phantom std out エラーが表示される理由
phantom.js を使用して Web スパイダーを作成しようとしています。ただし、理由がわからないエラーメッセージがたくさん表示されました。私のコードを以下に示します。
Nightmare.js を使用します。
/li>Phantom.js を使用します。
/li>
エラーメッセージは同じです:
最後の行で結果を取得できますが、上記のように非常に多くのエラーが表示されます。その理由は何ですか?
javascript - このパッチを適用した非同期入力が Nightmarejs で機能しないのはなぜですか?
私は今夜ナイトメア js を試していましたが、実行時にユーザー入力を必要とするステップが必要でした。nightmarejs にこのようなことを許可する方法はありますか? lib に付属の type() メソッドを変更したところ、実行を停止してテキストを入力することができました。スクリプトも終了しますが、入力するはずのテキスト ボックスに、入力した内容が表示されません。同じものと組み込みの type() メソッドを使用すると、静的テキストがそこにあるため、dom セレクターが正しいと確信しています。以下のコードでは、prompt(msg) はsync-prompt のメソッドです。これは私が書いたメソッドですが、ページ上の要素を更新しません。
私は何を間違っていますか?
web-crawler - nightmarejs (または casperjs/phantomjs) を使用してフォームの自動送信とリダイレクトに従う方法
nightmarejs を使用して、ページ スクリプトによって呼び出されるいくつかのリダイレクトと自動フォーム送信を追跡したいと思います。そして、最後のページを取得したい。
たとえば、次のhttp://myexample/
ようなページ コンテンツ:
このページのスクリプト要素がフォームを送信します。そして、への投稿リクエストhttp://somewhere/
が送信されます。そして、http://somewhere/
に 302 レスポンスを返しますhttp://another/
。
最後のページ ( http://another/
) を取得するために、次のような nightmarejs コードを試しました。
メソッドを試しましたがurl
、evaluate
最後のページを取得できませんでした。
このようなケースをサポートする方法はありますか? casperjs または phantomjs を使用した回答も大歓迎です。
アップデート
PhanomJS を試してみたところ、リダイレクトをたどることができました。しかし、エラーで接続に失敗するという別の問題がありSSL Handshake failed
ました。これを解決して--ssl-protocol=any
オプションを追加しました。
javascript - 同じテストでNightmarejsの複数のページ
Drupal サイトの 2 つの Web ページからタイトル タグ テキストを取得しようとしています。ナイトメアを使いたい。
これまでの私のコードは次のとおりです。
node app.jsを使用してこれを実行すると、最初のページに正常にログインできます。残念ながら、2 番目のページを開こうとすると、2 番目のページ呼び出し ( http://example.com/admin ) でアクセスが拒否されます。セッションは 2 番目の「goto」コマンドに引き継がれません。
同じ nightmarejs セッションで多くのページを開くにはどうすればよいですか?
javascript - ナイトメアを使用してファイルをダウンロードする
私は Nightmare を使用して、今日の新聞の自動ダウンローダーを作成しています。なんとかログインして、指定されたページに移動しました。しかし、Nightmare でファイルをダウンロードする方法がわかりませんでした。
ダウンロードボタンをクリックしてファイルをダウンロードしようとしました。ただし、これは機能しないようです。
node.js - 悪夢の HTTPS オプション: PhantomJS で ignoreSslErrors と sslProtocol が機能しない
[phantomjs -v 1.9.7] NightmareJS: https://github.com/segmentio/nightmare
タイムアウト オプションを使用する 1 つのサンプルでわかるように、オプションを最適に設定しました。
も試した
httpsページが開きません。
phantomjs を直接使用して同じページにアクセスすると、正常に動作します。
ページのタイトルはログインです
*** testBot.js
このコードは非常に厄介ですが、サイトを HTTPS ではなく HTTP に戻すと完全に機能します。
「ログイン」機能を呼び出したときに HTTPS が失敗し、入力ボックスが見つからないことはわかっています。
Nightmare は入力ボックスに対してエラーを返し、ページのタイトルは null です。「ボット」がログインしているかどうかに応じて、「ログイン」または「請求書の印刷」のいずれかになります。
次のスレッドは、「tlsv1」に関して私を正しい方向に導きました: PhantomJS は HTTPS サイトを開くことができませんでしたが、ナイトメア内で動作させることができません。
javascript - 撮影したスクリーンショットを使用している機能の悪夢型の結果
ちょっと悪夢のある要素のスクリーンショットを撮ろうとしていますが、このスクリーンショットから関数を使用してテキストを抽出し、その結果を で使用したいと考えていますnightmare.type()
。問題は、使用するnightmare.run()
と、スクリーンショットが存在しないというエラーが表示されることです。どうすればこれを修正できますか? これは私のコードです:
行を削除すると:
すべてが正常に機能し、スクリーンショットが取得されます。