no-image

ヘッドレスchromeでgoogle翻訳とってみた

ヘッドレスchromeを使ってみた

前回の記事で「phantomjsはいらない?ヘッドレスchromeとはなんですか?」というのを書きました。

要点は動的ページなどでwebスクレイピングするには、ブラウザを使う必要があるということでした。(将来はもっといいものが登場するかもしれませんが。)現段階ではseleniumなどを使ったスクレイピングが結構人気のような感じがします。

それでpythonでスクレイピングをする場合は、selenium+webdriver(ブラウザのドライバー?)を使う必要があります。このドライバーがPhantomJSとかです。はじめるには、seleniumをインストールして、webdriverの実行ファイルをカレントフォルダに置いておきます。

前置きはこのくらいにしておきます。

ヘッドレスchromeってどう使うの?

ヘッドレスChromeを使用するための事前準備は下記のとおりです。

  1. グーグルChromeをパソコンにインスト―ルしておく
  2. ヘッドレスChromeのドライバーをカレントディレクトリにおいておく
  3. そのほか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ということになるでしょうか。