SeleniumのChromeをシークレットモードで起動する

  • このエントリーをはてなブックマークに追加
Advertisements

PythonのSeleniumパッケージを使ってChromeを自動操作できることがわかりましたが、Chromeはユーザの操作履歴によってGoogle検索のランキングが変わるという特性があります。ここでは履歴情報を使わないPythonによるシークレットモードでChromeを起動する方法を紹介します。

こんにちは。wat(@watlablog)です。
SeleniumによるChromeブラウザ自動操作をしている人は是非知っておきたい、Pythonによるシークレットモードでブラウザを自動操作する方法を紹介します

Chromeの情報収集はシークレットモードの方が断然良い2つの理由

①情報が偏らない

Google Chrome(通称Chrome)というブラウザはPCだけでなく、スマホやタブレット端末でも世界中で多くの方が使っています。

そしてこのChromeは様々なユーザに合わせてブラウザを使いやすくする機能が付いています。

例えばあなたがChromeを使っていると、普段閲覧しているWebサイトのジャンル、ダウンロードしたファイル、キャッシュ、SNSやECサイトへのログインID…といった様々な情報がPCやスマホ、タブレット端末のメモリに保存されていきます。

その情報を元にChromeはよりあなたに適した情報を迅速に届けようとするわけです。

しかし、情報収集として広く世間の情報を公平に判断したい時にこの機能は単なるおせっかいになってしまいます

Google検索で特定のワードの検索順位を調べたい時に、自分の趣味嗜好が反映されたデータはノイズを含んでいるのと同じです。

そんな時、シークレットモードであればそれら履歴情報を使わず、さらに溜め込まずというユーザによる偏りの無い動作を行うことができることがメリットです。

②プログラム的な誤動作の可能性が低い

通常のChromeはSNS等のログイン情報も保存することが出来てしまいます。

誰しも普段利用するサイト(Amazon等)にアクセスしたら、既にログインIDが打ち込まれていたという経験があることと思います。あれは妖精さんではなく、ブラウザの仕業です。

普段使いであれば大変便利な機能(セキュリティ上は疑問ですが)と思いますが、ことプログラムで自動操作をしようとした時は話が違います。

Python等のプログラムでWebブラウザを自動操作する時、「PythonでGoogle検索タイトルとURL一覧を抽出してみた」で処理していたように、class, id, name, tag_name等を使ってHTMLを分析することになります。

ここで、予めフォームに何か入力された文字がある場合、それを知らないで.send_keysをしてしまうと、文字列が連結されてしまう等の動作をしてしまいます。

そのような場合は一度フォームをクリアして…と前処理をしないとエラーになったり、誤った目的のデータを分析してしまうことにもなりかねません

入力フォーム意外にも何かあるかも知れません(Googleのアップデートでどんな機能が追加されるかはわかりませんし)。

Chromeのシークレットモードであればこの問題も解決することができますので、プログラム的にイレギュラーな応答の可能性を低くするメリットもあります

PythonでChromeをシークレットモードで起動するコード

Advertisements

シークレットモードはオプションで指定する

Google Chromeをシークレットモードで起動するコードはとても簡単です。

以下のコードはimport文からwebdriverを用意する部分までのものですが、まずimportでOptionsを読み込み、add_argument関数で引数に'--incognito'を指定します。その後、webdriver.Chromeでオプション指定するだけです。

例)シークレットモードでWebスクレイピングをするコード

それではシークレットモードを使ったプログラミングの例を以下に示します。

以下のコードは「PythonでGoogle検索タイトルとURL一覧を抽出してみた」のコードをシークレットモードにしただけです。この記事にはPython環境や各種パッケージのインストールについての説明も記載しましたので、是非そちらも読んでみて下さい。

このコードを実行すると、Google Chromeが自動で立ち上がってページを遷移するクローリングを行います。

そして、先ほど紹介した記事の結果とはChromeの色が黒くなっている点が違います。この黒色こそがシークレットモードの証拠です。

まとめ

Advertisements

このページではPythonのSeleniumで操るGoogle Chromeをシークレットモードで起動する方法を紹介しました。

シークレットモードは偏りの無い情報を収集することができ、予期せぬエラーの可能性を低くすることもできる等メリットが沢山ありますね。

Chromeのオプション指定の方法を習得しました!他にもオプションが色々ありそうですね!

Twitterでも関連情報をつぶやいているので、wat(@watlablog)のフォローお待ちしています!

SNSでもご購読できます。

コメントを残す

*