ヘッドレスchromeでGoogle翻訳の翻訳結果を取得する概要
Google 翻訳は動的なページですので、動的ページをwebスクレイピングするには、ブラウザを使う必要があります。正確にはSeleniumとWebドライバーを使って動的なページのコンテンツを取得します。
ひと昔前はSelenium + PhantomJSでスクレイピングを行っていましたが、PhantomJSは2018年に開発が終了しているので、PhantomJSのかわりにChromeWebドライバーを使うのが一般的になっています。実際にスクレイピングするときはSeleniumをインストールして、WebDriverの実行ファイルをカレントフォルダに置いておきます。
ヘッドレスChromeってどう使うの?
ヘッドレスChromeを使用するための事前準備は下記のとおりです。
- グーグルChromeをパソコンにインスト―ルしておく
- ヘッドレスChromeのドライバーをカレントディレクトリにおいておく
- そのほかSeleniumなど必要なモジュールをインストールしておく
ヘッドレスChromeといっても他のヘッドレスブラウザを使い方は一緒です。カレントディレクトリにヘッドレスChromeのドライバーを置いておく必要があります。
ヘッドレスChromeのドライバは下記のサイトで入手できます。↓
Downloads – ChromeDriver – WebDriver for Chrome
Seleniumは外部のモジュールなのでpipインストールする必要があります。下記のコマンドでSelenimをインストールします。↓
pip install selenium
プログラムコードの解説
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をヘッドレスモードで立ち上げることができます。逆にブラウザを普通に立ち上げたい場合は 「options.add_argument(‘–headless’)」 という構文を削除します。記事の最初に書きましたがChromeWebドライバーを可憐とディレクトリにおいておかなければエラーがでてブラウザーは起動しません。
「spanlist = driver.find_elements_by_tag_name(“span”)」で翻訳結果を取得していますが、将来的にタグやクラス名が変わる可能性があるので適宜修正してください。
ヘッドレスChromeの翻訳取得時間は・・・
実は今回のコードは翻訳結果の取得時間もはかっているのですが、PhantomJSとヘッドレスChromeの翻訳取得時間を比較した結果、PhantomJS > ヘッドレスchromeという結果になりました。(PhantomJSのほうがはやい。)これは理由はわかりませんが、やはり、「importするものが多いから」というのが考えられます。ただこれも体感の話で参考にならないとは思いますが、ヘッドレスChromeのほうは安定感はあったと思います。あまりばらつきがないというか・・・そんな感じでした。
ただあまり速さにこだわっても仕方がないのであまり気にする必要はありません。
コメント