私はページに移動してすぐにページの少しだけをキャプチャすると、完全にレンダリングされた後に、ページソースをキャプチャするようにしようとしています30秒間スリープ状態にするとレンダリングが完了しますが、効率的にしたいと考えています。XHRリクエストやPythonのSeleniumのコンソールメッセージ
例としてhttps://twitter.com/i/notificationsを使用すると、ページが読み込まれてから5秒後にtoast_pollとタイムラインXHRリクエストがあることがわかります。
これらの要求の1つを検出し、1つが起動するまで待つことができれば、それはページが完全にロードされたことを示す指標です。
Done
が、その後、そのコンソールに表示されるまで、私はPhantomJSでコンソールコマンドを検出することができればそう& Firefoxは、これはXHRリクエストを待っているよりも良い選択となる火災
console.log("Done")
を使用していますサイトは、待つだけ
ページが完全にロードされたことを示すインジケータです。このポストの重複フラグ付けについて
:
この質問はPhantomJSとFirefoxに関してであり、ポストDetect javascript console output with pythonは年以上前からのものであり、与えられた答えは、私が探しています、Chromeで動作しますPhantomJS
とFirefox
オプションは、私がStackOverflowに基づいてすでに考えているとは思えません。それが私の投稿の私のスタートがXHRリクエストを待っている理由です。
私は
from seleniumrequests import PhantomJS
from seleniumrequests import Firefox
from selenium import webdriver
import os
webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.User-Agent'] = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/37.0.2062.120 Chrome/37.0.2062.120 Safari/537.36'
webdriver.DesiredCapabilities.PHANTOMJS['loggingPrefs'] = { 'browser':'ALL' }
browser = PhantomJS(executable_path="phantomjs.exe", service_log_path=os.path.devnull)
browser = webdriver.Firefox()
browser.set_window_size(1400, 1000)
url = "https://website.com"
browser.get(url)
for entry in browser.get_log('browser'):
print entry
私はすでに、次のコードを試してみたが、それは私のために動作しません..私はウェブサイトが(「完了」)はconsole.logを投げているにもかかわらず、ゼロ応答を取得私がDesiredCapabilities
の2つのロットを設定する方法がわからないので、browser = webdriver.Firefox()
でテストすることができませんでした。
[パイソンでJavaScriptコンソール出力を検出]の可能な複製を(http://stackoverflow.com/questions/28678872/detect-javascript-console-output-with-python) – salomonderossi
@salomonderossiこれはPhantomJSとFirefoxに関するものですが、その投稿はChromeについてのみです、私はPhantomJSとFirefoxのオプションを探しています。 StackOverflowに基づいて考えることができないので、私の投稿の私のスタートはXHRリクエストを待つことです。 – Ryflex
imho Firefox、Safari、IE、またはヘッドレスPhantomJSブラウザを使用することもできます – salomonderossi