ショック!Selenium別れPhantomJS

3714 ワード

背景
今日ローカルデバッグSelenium+PhantomJSに基づくダイナミック爬虫プログラムが無事終了した後、サーバーへの配備に着手し、買ったばかりの熱い京東雲、パチパチインストール環境、最後に走ったときにこんなエラーを報告しました.
UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead

私が5回試験してやっと漂った6級英語を使って目を凝らしてみると、新しいバージョンのSeleniumはPhantomJSをサポートしていません.ChromeやFirefoxのトップレス版を使ってください.头の中で一瞬にしてこの歌のメロディーが鸣り响いて、まったく受け入れることができなくて、どうして私达のPhantomJSを舍てました(¯▽¯)¯(¯▽¯)¯)¯(
この半年は爬虫類の需要が書かれておらず、最近は地元で使われている古いバージョンのSeleniumで開発されているため、PhantomJSのハイさが続いていたが、足取りが遅れていた.調べてみると、昨年7、8月にChromeとFirefoxが相次いでヘッドレスブラウザモードを発売したのかもしれません.そのためか、PhantomJSが独占的に騒ぎ立てる局面は一瞬にして失われ、歴史の塵の中に消えていくのだろうか......小さな工場から出た革新的な製品は、大きな工場が類似の製品を作った後、小さな工場GGも、たぶんそういうことだろう......
Selenium+Headless Firefox
いやだけど、人はいつも過去の美しさを追憶するわけにはいかない.
実はSelenium+Headless Firefoxは何も言うことはありませんが、Selenium+Friefoxとの違いはインスタンス化するときにパラメータを渡すだけです.
注意すべき点は、
  • ローカルにFirefoxが必要です.そうしないと、キャリア
  • が見つかりません.
  • ローカルにgeckodriverが必要です.環境変数
  • を再構成したほうがいいです.
  • がなくなった
  • 各言語のサンプルコードはこのリンクで見つけることができます.ここでpythonのサンプルコードを運びましょう.
    from selenium.webdriver import Firefox
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.firefox.options import Options
    from selenium.webdriver.support import expected_conditions as expected
    from selenium.webdriver.support.wait import WebDriverWait
    
    if __name__ == "__main__":
        options = Options()
        options.add_argument('-headless')  #     
        driver = Firefox(executable_path='geckodriver', firefox_options=options)  #                 ,       
        wait = WebDriverWait(driver, timeout=10)
        driver.get('http://www.google.com')
        wait.until(expected.visibility_of_element_located((By.NAME, 'q'))).send_keys('headless firefox' + Keys.ENTER)
        wait.until(expected.visibility_of_element_located((By.CSS_SELECTOR, '#ires a'))).click()
        print(driver.page_source)
        driver.quit()

    win 10もubuntuもテストして大丈夫でしたが、以前はPhantomJSを1つインスタンス化して約3秒、Headless Firefoxなら7秒くらい・・・実は大雅を傷つけませんでした.
    ここで友情は初心者の友达にヒントを与えて、1つのホームページをダウンロードするたびに1つのwebdriver(Firefox or Chrome)をインスタンス化してからclose()を落として、webdriverをインスタンス化する时間も时間です~ダウンロード器を単例クラスにするか、webdirverをクラス変数にすることをお勧めします.
    Selenium+Headless Chrome
    これは上と大同小異で、私は試していません.ドアを転送します.
  • PhantomJSはSeleniumにおいて時代遅れと表記された対応策
  • Getting Started with Headless Chrome

  • こまごました考え
    上记のあの歌の中の ここは反対の意味で、中国语の反対ではありませんて、しかし、本当に良い感じ~
    1段目の今日は昨日になって、またバレンタインデーになってきましたね.去年のバレンタインデーにもブログを书いたみたいですね.去年も今のように独身だったんですね.なんて涙が出てきましたか.