問題タブ [headless-browser]
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.
azure - ヘッドレス ブラウザーと Windows Azure Web サイト
開発中のオープン ソース プロジェクトに SEO 機能を追加するために、クロール目的でヘッドレス ブラウザを使用しようとしています。
プロジェクト サンプル サイトは、Azure Web サイトを介してデプロイされます。
Selenium .NET (PhantomJSDriver、HTMLUnitDriver、...) やスタンドアロンの PhantomJs .exe ファイルなどのさまざまなソリューションを使用して、タスクを機能させるいくつかの方法を試しました。
サイトが DurandalJS に基づいているため、私はヘッドレス ブラウザーを使用しています。生成された HTML を返すには、スクリプトを実行し、条件が true になるのを待つ必要があります。このため、WebClient/WebResponse クラスや HTMLAgilityPack など、JavaScript 以外のサイトでは問題なく機能していたものは使用できません。
上記の方法はすべて、devbox localhost 環境で機能しますが、サイトを Azure Web サイトにアップロードするときに問題が発生します。スタンドアロンの phantomjs を使用すると、url エンドポイントにアクセスするとサイトがフリーズし、しばらくすると HTTP 502 エラーが返されます。Selenium Webdriver を使用する場合、私は
問題は、コードではなく、Azure で .exe ファイルを実行することにあると思います。WebRole/WebWorkers を介して Azure CloudServices で .exe ファイルを実行できることはわかっていますが、物事をシンプルに保つために Azure Websites にとどまる必要があります。
Azure Web サイトでヘッドレス ブラウザーを実行することは可能ですか? この種の状況の経験がある人はいますか?
スタンドアロンの PhantomJS ソリューションのコードは次のとおりです。
およびSeleniumオプションの場合
ありがとう!!
javascript - javascriptが注入された画像のsrcとaltをphantom.jsでスクレイピングするには?
次のスクリプトを使用して、phantom.js を使用して画像をスクレイピングしています。
しかし、変数を定義した後、スクリプトがハングしますa
。つまり、反復処理が行われず、src 属性と alt 属性が返されません。34をconsole.log(a)
返すと、適切な画像リソースがあると思います。src および alt 情報にアクセスするにはどうすればよいですか? ありがとう!
python - ページをスクレイピングするための ghost.py の使用エラー
ローカル マシンで動作するスクリプトを使用して、ghost.py を使用して Web サイトをスクレイピングしようとしています。
しかし、それを自分の Web アプリに追加すると、以下の非常に長いエラーが表示され、Python がクラッシュします。エラーのすべての行を読みましたが、何が問題なのかわかりません。それを機能させるための最初の方向性を教えていただければ、どんな助けでも素晴らしいでしょう! ありがとうございました!!!
ruby - 他のソースと一致しない Watir-Webdriver フレーム属性
フレームの一部の属性を返すと、たとえば Firebug の属性と一致しないという問題があります。その理由は、フレームの目的を特定する方法を探しているからです。たとえば、www.cnet.com では、合計 19 フレームが読み込まれ、そのうちのいくつかは JavaScript を使用した HTML です。すべてではなく一部のフレームを検査したい。
Firebug を使用すると、フレームに関するいくつかの興味深い属性が表示され、これらの属性のいくつかに基づいてフレームをフィルター処理したいと考えています。
必要な属性の例として、次の Ruby コードがあります。
出力は次のとおりです。
ただし、これはページ www.cnet.com の childNodes/Children の Firebug からの出力です。
Firebug を参照すると、リストの最初の項目には次の属性があります。
ところで、私は Linux 上の Firefox でヘッドレスで water-webdriver を使用しています。
どんな助けでも大歓迎です。
ruby - Watir Webdriver 速度の問題を使用したリンク抽出
Firefox を実行している Linux システムでヘッドレスで Watir Webdriver を使用していますが、Web ページからリンクを抽出する際に速度の問題が発生しています。問題は、複数のフレームが使用されている場合のようです。たとえば、www.cnet.com のすべてのリンクを返すのに 10 分かかる場合があります。
なぜこれほど時間がかかるのですか?それをスピードアップするためにできることはありますか?
たとえば、これらは私がとった典型的なタイミングです。「デフォルト フレーム」からすべてのリンクを取得するには約 8 秒かかりますが、フレームからそれらを取得するには 20 秒かかります。
実際、この場合、実際にリンクを含むフレームはありません。(特定のフレームのスキップについて私が提起したこの問題を参照してくださいWatir-Webdriver Frame Attributes Not Congurent with Other Sources )
ページからリンクを抽出するコードは次のとおりです。
フレームからリンクを抽出するために使用するコードは次のとおりです。
どんな助けでも大歓迎です。
javascript - JSON.stringify は、2 つの異なるページのコンテキストに応じて異なる動作をします
サイトをクロールするために CasperJS を使用しています。興味深いことを見つけましたが、なぜそれが起こっているのかよくわかりません。
そのため、CasperJS (および PhantomJS) を使用すると、Evaluate PhantomJS Evaluate CasperJSメソッドを使用して Page コンテキストに入ることができます。
ページ コンテキスト内にオブジェクトを作成しました。それを CasperJS に返すために、それを文字列に変換します。これが私がすることです:
したがって、2 つの異なるページでは、結果が異なります。
このページのコンテキストでは、JSON_obj の値は次のとおりです。
この別のページコンテキストでは、JSON_obj 値は次のようになります。
Rubyで結果をキャッチするので、これは悪いことですJSON.parse
。最初のケースでは、配列を文字列として扱います...JSON.stringify
異なるページコンテキストで「異なる」動作をするのはなぜですか? 私にとって興味深い!