ヘッドレスchromeを使ってみた
前回の記事で「phantomjsはいらない?ヘッドレスchromeとはなんですか?」というのを書きました。
要点は動的ページなどでwebスクレイピングするには、ブラウザを使う必要があるということでした。(将来はもっといいものが登場するかもしれませんが。)現段階ではseleniumなどを使ったスクレイピングが結構人気のような感じがします。
それでpythonでスクレイピングをする場合は、selenium+webdriver(ブラウザのドライバー?)を使う必要があります。このドライバーがPhantomJSとかです。はじめるには、seleniumをインストールして、webdriverの実行ファイルをカレントフォルダに置いておきます。
前置きはこのくらいにしておきます。
ヘッドレスchromeってどう使うの?
ヘッドレスChromeを使用するための事前準備は下記のとおりです。
- グーグルChromeをパソコンにインスト―ルしておく
- ヘッドレスChromeのドライバーをカレントディレクトリにおいておく
- そのほかSeleniumなど必要なモジュールをインストールしておく
ヘッドレスChromeといっても他のヘッドレスブラウザを使い方は一緒です。カレントディレクトリにヘッドレスChromeのドライバーを置いておく必要があります。
ヘッドレスChromeのドライバは下記のサイトで入手できます。
Downloads – ChromeDriver – WebDriver for Chrome
プログラムコードの解説
今回紹介するのは下のリンクのコードをヘッドレスchromeでやる方法です
Google翻訳で翻訳された文章をとってくる【python, PhantomJS】
import time, pyperclip from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() # ヘッドレスモードを有効にする(次の行をコメントアウトすると画面が表示される)。 options.add_argument('--headless') t1 = time.time() driver = webdriver.Chrome(chrome_options=options) driver.get("https://translate.google.co.jp/?hl=ja#en/ja/" + pyperclip.paste()) spanlist = driver.find_elements_by_tag_name("span") for i in range(55, 57): print(spanlist[i].text) driver.quit() t2 = time.time() elapsed_time = t2-t1 print(f"経過時間:{elapsed_time}")
細かい説明ははぶきますが、重要なのは、7行目です。これだけでヘッドレスモードにすることができます。ようするにchromeウェブドライバーをカレントフォルダにおいておけば、それを通常のブラウザで開くかヘッドレスモードで開くかを選択できます。
昔はもう少しなにか工夫しなければならなかったみたいですが、現在はchromeのバージョンもあがっていて、細かい設定は必要なくなったみたいです。
ヘッドレスモードchromeの翻訳取得時間は・・・
データ収集を効率化する方法を知らないので、普通に目で見た結果をお伝えしますと
PhantomJS > ヘッドレスchromeという結果になりました。(PhantomJSのほうがはやい。)
これは理由はわかりませんが、やはり、「importするものが多いから」というのが考えられます。ただこれも体感の話で参考にならないとは思いますが、ヘッドレスchromeのほうは安定感はあったと思います。あまりばらつきがないというか・・・そんな感じでした。
この結果をふまえると普段使いはやはりPhantomJSということになるでしょうか。