問題タブ [mozrepl]
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.
perl - MozRepl でヘッドレス Firefox をセットアップする
Xサーバーがない環境でjavascriptで作成したhtmlを扱えるクローラーを動かしたいと考えています。xvfb の下でヘッドレス状態で Firefox を実行できることを知っています。また、実際のブラウザーがあり、モジュールをダウンロードしてセットアップできる場合に、Firefox に MozRepl をインストールし、WWW::Mechanize を使用して対話する方法も知っています。
モジュールを簡単にインストールできるように、X サーバーがない環境で Firefox に MozRepl をセットアップする方法がわかりません。どんな助けでも大歓迎です。
javascript - JavascriptオブジェクトでUnicode文字列キーを使用するにはどうすればよいですか?
次のように、オブジェクトのユニコード文字列をキーとして使用したい:
大丈夫です t["姓名"] return "naitong"
しかし
空の文字列 " " を取得しました
誰でも理由を知っていますか?
編集:
firebug をインストールしてコンソールで試してみると、動作します。実際、私はmozreplを使用しているので、emacsでjavascriptを編集して実行できます。これは mozrepl と関係があります
私は、mozrepl が「7 ビットセーフ ASCII」のみをサポートしていることを確認しました。ユニコードを変換するには、次のように emacs で json エンコードする必要があります。
これは、stackoverflow で尋ねた最初の質問であり、迅速な回答を得ました。皆さん、ありがとうございました。
perl - Mozreplを使用してWWW::Mechanize::FireFoxでサムネイルを作成する-いくつかのデバッグの試み
さて、私はこのスクリプトを実行します。これは、私が持っているWebサイトのスクリーンショットを作成するために作成されています。mozreplも実行しています。
ここに、要求されたURLのいくつかを含むファイルがあります...これは実際のリストの短いスニペットにすぎないことに注意してください-実際のリストははるかに長いです。3500を超える行とURLが含まれています
奇妙なのは出力です-以下を参照してください...質問:スクリプトを変更する必要があります
次の小さなスクリプトで出力を取得するのはなぜですか。
ここで非常に圧倒的な出力を参照してください-率直に言って、私はそのような面白い出力を取得するのに苦労することはありません..コード全体をデバッグする必要があります....以下を参照してください、
いくつかの考え:まあ-まず、これはそれほど深刻なエラーではないと思います-デバッグする必要があると思います。そうすればうまくいくでしょう。第二に、私は最初に、スクリプトが「マシンに過負荷をかけている」ように見えると思いましたか?今、私はそれについてよくわかりません。症状は奇妙に見えますが、「マシンの過負荷」を結論付ける必要はないと思います。
第三に、問題がWWW :: Mechanize :: Firefoxにまったく関連していることを確認するために、実行する必要のある特定の手順について考えます。これは、Perl警告が何を意味するのか、そして診断プラグマを使用してより多くの説明を得るという考えに私を導きます:あなたはどう思いますか?
まず、open()、sysopen()、またはso + cket()呼び出しを行うか、それ以外にFileHandleパッケージからコンストラクターを呼び出す必要があります-あるいは、閉じたファイルハンドルOUTPUTのprint()も多くの答えを提供しますこれは、autodieを使用せず、openの戻り値もチェックしなかったことを示しています。何よりも、デバッグして、エラーが発生する場所を確認する必要があります[/ QUOTE]
しかし、いくつかの熟考の後で、すべてのテスト事項を詳しく調べる価値があると思います-、ファイルを使用する前にファイルが開いていることを確認するために常にテストするというアイデアについてどう思いますか?3つを使用する習慣
ええと-私は、を使用せずにこれを回避できる、または回避する必要があると思いdie()
ますが、作成できなかったファイルを通知するための何らかの方法を手動で用意する必要があります。私たちの場合、それらすべてのように見えます....上に示されています...
適切なファイル名を選択する際の更新は、画像を保存するためのファイル名が必要であることを意味します。注:すべての画像をローカルに保存したいのです。しかし、URLの膨大なリストがある場合は、出力ファイルの膨大なリストを取得します。したがって、私は良いファイル名を持っている必要があります。それらのことやニーズをプログラムに反映させることはできますか?
最新のアップデート; mechanizeにエラーがあるようです....そうだと思います!!!
perl - WWW:Mechanize:Firefox が接続に失敗する
短い Perl スクリプトを作成しています。WWW::Mechanize::Firefox
モジュールを使用しています。オブジェクトをインスタンス化すると、モジュールが Firefox の MozRepl コンポーネントとの接続を確立できないと思います。
私のコードは次のとおりです。
コードを実行すると、次のエラー メッセージが表示されます
考えられるすべての関連ソフトウェアをインストールして更新しました
- パール 5.12.4
- Firefox 用 MozRepl 拡張機能
- CPAN
- モズレプル
- WWW::機械化
- WWW::機械化::Firefox
ポート 4242 を開くようにファイアウォールを調整しようとしましたが、何も機能していません。何か案は?
同様のエラー コードがこのスタック オーバーフローの質問に表示されます
アップデート
わかりました、ボロディンの答えは実際に2つの問題を修正しました。
WWW::Mechanize::Firefox->new() は次の場合にのみ機能します
- Firefox ブラウザはすでに開いており、
- Firefox を起動したら、Borodin の指示に従い、MozRepl も起動します。
Perl スクリプトがシェル スクリプトのように動作し、Firefox を起動することを期待していました。これはそうではありません。
また、Firefox でメニュー バーを非表示にすると、左上に表示されるドロップダウン リストでアクセスできないメニューは [ツール] メニューだけです。[ツール] メニューにアクセスするには、メニュー バーを表示する必要があります。
javascript - プログラムでFirefoxを開き、POSTリクエストを行いますか? [アイデア: MozRepl、提案?]
私のアプリケーションでは、Firefox を開き (まだ開いていない場合)、ファイルのアップロードを含む POST 要求を実行し、結果のページを (さらなるナビゲーションのために) ユーザーに表示するボタンが必要です。
これまでに発見したことから、これには MozRepl や JSSH などの Firefox 拡張機能を使用する必要があるように思われるため、アプリケーションから Telnet または SSH 経由でプロセスに接続できます。他の方法はありますか?私は良い提案を受け入れます...
次に content.XMLHttpRequest を使用して POST リクエストを作成する必要があります。
しかし、何が入ってくるのでしょうか [...]? ローカル フォームから作成された File オブジェクトがあります。しかし、どうすれば自分でインスタンス化して埋めることができますか? ページの結果を Firefox に表示するにはどうすればよいですか?
一時ファイルをディスクに書き込んでそこから読み取るか、Javascript/MozRepl を介してファイルの内容を直接書き込むことができます。どちらも受け入れられます (ただし 1) おそらく Javascript には適していません)。
よろしくお願いします、-M.
perl - WWW::Mechanize::Firefox のトラブルシューティング
ブラウザに MozRepl をインストールし、起動時に起動して外部接続を受け入れるように設定しました。
私の質問は次のとおりです。1) コードを実行するだけでmy $mech = WWW::Mechanize::Firefox->new();
、Firefox ブラウザが起動しますか?
2) 外部接続を受け入れるように MozRepl を設定しましたが、Firefox が起動していないときに、スクリプトが 1) のコードに到達すると、unable to connect, problem connecting to localhost, on port 4242
. telnet localhost 4242
起動していないFirefoxブラウザでやってデバッグしてみました。また、このエラーが発生しますCould not open connection to the host, on port 4242: Connect failed
。
この結果を期待する必要がありますか?
3) 上記の問題を考慮して、mechanize::firefox インスタンスを作成する前に、system() を使用してブラウザーを起動することにしました。ブラウザは起動できますが、mechanize::firefox インスタンスが作成されるコードには到達しません。
mechanize::firefox インスタンスを作成してブラウザーを操作できるように、Firefox ブラウザーを起動できるようにするにはどうすればよいですか?
javascript - Firefoxを起動する最も簡単な方法、特権nsI*APIを使用してサードパーティのサイトを駆動する
Firefoxを起動し、サードパーティのWebサイト(「自動化」する権限があります)をロードし、そのサイトに対していくつかの「特権」APIを実行する最も簡単な方法は何ですか?(例:nsIProgressListener、nsIWindowMediatorなど)。
私は2つのアプローチを試しました:
XULrunnerを使用してタブ付きブラウザを作成し、サードパーティのサイトが新しいウィンドウを開いたり、302リダイレクトをフォローしたりするために必要なすべての適切なAPIを「配管」します。このようにすると、非常に多くのコードが必要になります。ユーザーがアプリをインストールするか、-appを使用してFirefoxを実行します。また、非常に壊れやすいです。:-/
MozReplがすでにリッスンしている状態で、サードパーティサイトのURLを渡すFirefoxを起動します。次に、起動後すぐに、「launch」スクリプトからMozReplにTelnetで接続し、mozIJSSubScriptLoader :: loadSubScriptを使用してコードをロードし、サードパーティサイトのコンテキストでMozReplからコードを実行します。これが現在の方法です。それ。
最初のアプローチでは、(明らかに)多くのセキュリティ問題を回避する必要があり、自動化コードよりも10倍多くのブラウザ「配管」コードを書いているようです。
2番目のアプローチでは、多くの「タイミングの問題」が発生しています。
- サードパーティのサイトは、MozRepl(または私が提供する特権コードの実行)によってロードされないようになっています???、または
- サードパーティのサイトは読み込まれますが、MozReplによって実行されたコードは読み込まれません。
- サードパーティのサイトが読み込まれ、MozReplがリクエストを受け取る準備ができていません(ページで他のJavaScriptが実行されていて、ポート4242がFirefoxプロセスにバインドされているにもかかわらず)。
- 等
私は多分このようなことをすることを考えました:
何らかの方法でMozReplソースを変更して、起動時にファイルシステムの予測可能な場所から特権JavaScriptをロードし(またはFirefoxコマンドライン引数と対話し)、サードパーティのWebサイトのコンテキストで実行します。
...または、タスク専用の別の同様のアドオンを作成することもできます。
もっと簡単なアイデアはありますか?
アップデート:
試行錯誤の末、私自身の質問に答えました(下記)。
ajax - ページから複数のアイテムをきちんとした行にスクレイピングする
例として:
.txtから入力をロードします。
ベンジャミン、シュヴライン、ドイツ、1912年、M、ホワイト
簡潔にするためにここに投稿しないコードをいくつか実行し、リンクにアクセスします。
https://familysearch.org/pal:/MM9.1.1/K3BN-LLJ
- そのページから複数のものを削りたい。以下のコードでは、1つだけ実行します。
- また、出力.txtで、各項目を。で区切るようにします。
- そして、出力の前に入力を付けてほしい。
コードで次のパッケージを使用しています。
関連するコードは次のとおりです。
(そのリンクからの)必要な出力は次のようなものです。
ベンジャミン、シュヴライン、ドイツ、1912年、M、ホワイト、クイーンズ、ニューヨーク、既婚、同じ場所、頭など...
(その出力セクションのどれだけがスクレイプ可能ですか?)
リンク内のリンクを取得する方法についてのヘルプをいただければ幸いです。
ajax - Perl - 入力からの変数を URL の 2 つに分割する
スクレイピングの目的で .txt からデータをロードしています。ただし、URL では、その変数を分割して +/- 2 を実行する必要があります。たとえば、値が 2342 の場合、URL のために 2340 と 2344 を作成する必要があります。
私はそれを分割する方法を推測しました:
どうすればそれをURLに入れることができますか?
コードの関連部分は次のとおりです。
例えば
入力は次のとおりです。
希望の URL は次のとおりです。