問題タブ [casperjs]
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.
php - Phantomjs を使用したスクリーン スクレイプ、結果は MYSQL に保存されます
この Web サイトをスクレイピングしようとしています: http://www.machinerytrader.com/list/list.aspx?ETID=1&catid=1002
最初はこれを行うために PHP を使用しようとしましたが、本文の html が暗号化されていることがわかりました。したがって、この html には、phantomjs などのヘッドレス Webkit を使用してアクセスするのが最適なようです。
私の質問は一般的なものです。PhantomJS でこのデータをスクレイピングし、そのデータを MySQL に保存する最良の方法は何ですか?
この移行の例をオンラインで見たことがないので、何も解決できません。
アップデート:
少し読んだ後、CasperJSとそのダウンロード機能を使用して生のhtmlをローカルに保存し、後でPHPを使用してそれを解析するのが理にかなっていると思います...しかし、このアプローチはかなり回り道です...
phantomjs - クライアント経由ではなく、PhantomJS で URL を取得する
QTWebKit クライアントを経由せずに PhantomJS (または CasperJS) でファイルをダウンロードする方法はありますか?
テスト対象のページとは関係のない URL から、JSON でエンコードされたデータをダウンロードしたいと考えています。
PhantomJS API または CasperJS API の機能は、不気味なクライアントで URL を開くことを目的としているように見えるため、これを行う方法は明らかではありません。
次のようなものを単純に実行できると思います。
PhantomJs ページにダウンロードしてからクライアントにダウンロードするという通常の手順には、2 つの理由で問題があります。まず、遅くて面倒です。2 つ目は、同一生成元ポリシーに違反しています (そのため、CasperJS のbase64encode関数は機能しません)。
基本的には、PhantomJS クライアント用の JavaScript ランナーが XMLHttpRequest (またはそれに類するもの) を実装することを期待していますが、もう少し標準的なものが利用できるのではないかと思います。
編集
おそらく、jQuery を含めて を使用することもできます$.ajax
が、残念ながら、同じオリジンの例外もスローされます。
XMLHttpRequest はhttp://example.com:5000/testを読み込めません。オリジン file:// は Access-Control-Allow-Origin で許可されていません。
私が思いつく唯一の解決策は、JSON でアクセスしたいファイルを別のプロセス (wget などを使用) でダウンロードすることですが、PhantomJSはプロセスの実行を許可していないため(この記事の執筆時点)、 PhantomJS とは別に開始する必要があります。
javascript - casperJsテストでjqueryを使用する
jqueryに依存しないWebアプリケーションがあります。
私は(素晴らしい:))casperjsのおかげで機能テストを行っています。
ここで、テストでjqueryを使用したいと思います。そこで、ここhttp://casperjs.org/faq.html#faq-jqueryに示されているように注入しようとしました。まあ、それは機能していません。
あなたが私を助けることができるなら、これが私のコードです-何か問題がありますか?:
それがポイントではないので、私はテストを削除しました...
ありがとう!
php - PHPからcasper JSにutf-8でエンコードされたパラメータを渡す
PHP shell_exec関数を介して、このコードで「référencement」という単語をparamとして渡しています
しかし、casperjsでログに記録すると、奇妙な文字が表示されます。PHPではすべて問題ありません。casperjs で charset utf8 を設定するにはどうすればよいですか? または、どのように解決策を見ますか?
coffeescript - 空のWebページ応答を与えるcasperjsスクレイプ
ログイン方法の詳細が記載されたサイトのリストを含むjsonファイルを読み取り、各キーワードの検索ページを実行することになっているCasperJSのスクリプトを作成しました。
機能する 1 つのサイトでコードをテストしましたが、2 番目のサイトではログインしますが、検索ページに移動しようとすると空のページが返されます。
これは私のキャスパーのセットアップです:
これはループコードです:
失敗に関係するコンソール出力は次のとおりです。
ページが空のページで応答するのはなぜですか?
編集: 他のサイトでのテストを通じて、基本コードは機能しているように見えますが、この 1 つのサイトが問題を引き起こしているようです。
phantomjs - CasperJS: リモート ページの JavaScript を無効にしますが、まだ casper.evaluate を使用しますか?
私のトピックを読んでくれてありがとう。以下を達成するために探求すべき他の手段を誰かが提案できれば、本当に感謝しています。
CasperJS または PhantomJS を使用して、移動するページに属するすべての JavaScript の実行を無効にする必要がありますが、casper.execute を使用して独自の JavaScript を実行することはできます。
これを行う方法を知っている人はいますか?
- onResourceRequested または onResourceReceived を使用して HTTP ヘッダーまたはボディを変更することは可能ですか? または条件付きでリクエストをキャンセルしますか? それとも読み取り専用ですか?
- 解析用に提供される前に生の HTML ソースを変更できますか?
- 早い段階で casper.execute で window.stop() をハッキングしようとしましたが、これはページ間で一貫性がありません。
- Phantom WebServer モジュールはこの種のものに使用されますか? それを介して要求/応答をルーティングし、通過するときにそれらを変更できますか/すべきですか?
助けてくれてありがとう - これは奇妙なユースケースだと思います.
phantomjs - phantomjs シェル内から casper を実行するにはどうすればよいですか?
phantomjs シェル (別名InteractiveModeREPL ) 内から casperjs を実行できるかどうか、またその方法を知っている人はいますか?
また、直接パスを casper.js モジュールに渡そうとしましたが、どちらも機能しませんでした。
進行状況/更新:
- 試し
phantomjs.injectJs('C:/casperjs/module/casper.js');
てみましたがError: Cannot find module 'colorizer'
、近づいていると思います。 - これは私を近づけますが、まだパスがありません:
phantomjs.injectJs('C:/casperjs/module/bin/bootstrap.js')
- でエラーが出ます
Cannot find package.json at C:/package.json
- でエラーが出ます
- OK、phantomjs の起動時に --casper-path オプションを渡すことができるようです (- casper/bin/bootstrap.js: 189 行目を参照)。
- うまくいきました。(オプションを渡しても機能しませんでしたが、ファントム内のパスを設定すると機能しました)。
google-app-engine - Travis-CI で Google App Engine を実行し、PhantomJS でテストします
Travis-CIでGoogle App Engine開発 appserverインスタンスを実行し、そのアプリをPhantomJS / CasperJSでテストする方法はありますか?
これがとてつもなく難しいことであるとは必ずしも予想されませんが、関連する文書、考え、提案があれば感謝します。
casperjs - vardumpに相当するCasperjs
var_dump
casper jsに相当するものを知りたいですか?
casperjs - 評価するパラメータを渡すcasperjsが失敗する
これは私を投げます
string(307) "[37; 41; 1mFAIL [0m ReferenceError:変数が見つかりません:phone_number
メソッドを評価するためにパラメータを渡す方法はありますか?