coiai Logo
coiai

スクレイピング chrome driver を実行するまで

これは何

スクレイピングを実行するにあたって、chromedriver を導入するまでの記事です。


ChromeDriver (クロームドライバー)とは、Google Chromeブラウザを自動的に操作するためのツールです。これは、WebDriverプロトコルを実装しており、主にウェブアプリケーションのテストを自動化するために使われます。ChromeDriverは、特にSeleniumというオープンソースの自動化フレームワークと組み合わせて使用され、ブラウザ操作をスクリプトで自動化する際に非常に便利です。


🪴 実行環境

  • Apple Silicon M1 MacBook Air
  • 16 Gb
  • macOS Sequoia 15.0
  • chromedriver version : ChromeDriver 129.0.6668.58
  • Google Chrome version : 129.0.6668.59(Official Build) (arm64)
  • 2024/09/18 現在の実行

🛠️ やり方

まずは作業するディレクトリを作成します。

mkdir scrapingTest

venv モジュールを使用して仮想環境を作成する。
venv という名前のディレクトリがカレントディレクトリに追加されます。

python -m venv venv

仮想環境有効化

source venv/bin/activate

必要なライブラリのインストール

pip install requests beautifulsoup4 selenium
  • requests: ウェブページからデータを取得するライブラリ。
  • BeautifulSoup4: HTMLやXMLのデータを解析し、必要な情報を抽出するためのライブラリ。
  • Selenium: JavaScriptで生成されたコンテンツを扱うための自動化ライブラリ。動的なページにも対応。

ChromeDriver のインストール

ChromeDriver のインストール

macの方はbrewをつかって入れます。

brew install chromedriver

Webサイトから落としたい方は最新安定版は以下リンクからお使いのOSに合ったものをダウンロードできるはずです。https://googlechromelabs.github.io/chrome-for-testing/#stable

chromedriver のパスを確認する

which chromedriver

brew –prefix を使った確認は“No available formula with the name “chromedriver”. Did you mean chrome-cli?”と返ってくるため、できませんでした。解決方法はあると思いますが…。

実行確認

pythonファイルを作る

touch scraper.py
from selenium import webdriver

# ChromeDriverのパスを指定
driver = webdriver.Chrome(executable_path='/opt/homebrew/bin/chromedriver')

# 例: Webページにアクセス
driver.get('https://coiai.boy.jp')

# ブラウザを閉じる
driver.quit()

私の場合出力されたパス名は/opt/homebrew/bin/chromedriverだったのでこれを当てはめています。

上記ファイルを正しく実行できた場合は、一瞬私のブログが立ち上がって、ブラウザが閉じる動作をすると思います。
ターミナルからの返答はありません。

このような場合は失敗

【ケース1】システム環境設定の問題

実行すると下記のポップアップが出る場合があります。

Appleは、“chromedriver”にMacに損害を与えたり、プライバシーを侵害する可能性のあるマルウェアが含まれていないことを検証できませんでした。

その場合は システム環境設定 を開いてください。
プライバシーとセキュリティ の項目をクリックして、下部までスクロールすると、 お使いの Mac を保護するために “chromedriver” がブロックされました。 と表示されているはずです。
その右にある”このまま許可” のボタンを押下し、再度ターミナルで実行すればできます。

【ケース2】ChromeDriver と Chrome のバージョン違いによるエラー

もしここで以下のような返答があれば、お使いの Chrome と chromedriver のバージョンが合っていない可能性があります。

Traceback (most recent call last):
  File "/Users/coiai/Code/scrapingTest/scraper.py", line 6, in <module>
    driver = webdriver.Chrome(service=service)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/coiai/Code/scrapingTest/venv/lib/python3.12/site-packages/selenium/webdriver/chrome/webdriver.py", line 45, in __init__
    super().__init__(
  File "/Users/coiai/Code/scrapingTest/venv/lib/python3.12/site-packages/selenium/webdriver/chromium/webdriver.py", line 66, in __init__
    super().__init__(command_executor=executor, options=options)
  File "/Users/coiai/Code/scrapingTest/venv/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 212, in __init__
    self.start_session(capabilities)
  File "/Users/coiai/Code/scrapingTest/venv/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 299, in start_session
    response = self.execute(Command.NEW_SESSION, caps)["value"]
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/coiai/Code/scrapingTest/venv/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 354, in execute
    self.error_handler.check_response(response)
  File "/Users/coiai/Code/scrapingTest/venv/lib/python3.12/site-packages/selenium/webdriver/remote/errorhandler.py", line 229, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 129
Current browser version is 128.0.6613.138 with binary path /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
Stacktrace:
0   chromedriver                        0x0000000102457ed4 cxxbridge1$str$ptr + 1906348
1   chromedriver                        0x0000000102450344 cxxbridge1$str$ptr + 1874716
2   chromedriver                        0x0000000102064264 cxxbridge1$string$len + 89492
3   chromedriver                        0x000000010209a1dc cxxbridge1$string$len + 310540
4   chromedriver                        0x0000000102099404 cxxbridge1$string$len + 306996
5   chromedriver                        0x00000001020951b0 cxxbridge1$string$len + 290016
6   chromedriver                        0x00000001020916c0 cxxbridge1$string$len + 274928
7   chromedriver                        0x00000001020d2188 cxxbridge1$string$len + 539832
8   chromedriver                        0x00000001020d1ac8 cxxbridge1$string$len + 538104
9   chromedriver                        0x000000010209d134 cxxbridge1$string$len + 322660
10  chromedriver                        0x000000010209dd84 cxxbridge1$string$len + 325812
11  chromedriver                        0x000000010241ff90 cxxbridge1$str$ptr + 1677160
12  chromedriver                        0x00000001024248fc cxxbridge1$str$ptr + 1695956
13  chromedriver                        0x00000001024054b8 cxxbridge1$str$ptr + 1567888
14  chromedriver                        0x00000001024251cc cxxbridge1$str$ptr + 1698212
15  chromedriver                        0x00000001023f6a60 cxxbridge1$str$ptr + 1507896
16  chromedriver                        0x0000000102441214 cxxbridge1$str$ptr + 1812972
17  chromedriver                        0x000000010244136c cxxbridge1$str$ptr + 1813316
18  chromedriver                        0x000000010244ffe4 cxxbridge1$str$ptr + 1873852
19  libsystem_pthread.dylib             0x000000019abbf2e4 _pthread_start + 136
20  libsystem_pthread.dylib             0x000000019abba0fc thread_start + 8
chromedriver --version

で返ってくるバージョン情報と
chrome の更新はchromeの設定からchromeについて、からみられるバージョン情報を見比べてみてください。(場合によってはアップデートしましょう)

投稿日: 2024年9月18日
カテゴリ: Python
タグ: Apple Silicon, python, スクレイピング, プログラミング
coiai

coiai

この記事もおすすめ

MetaStore コンテンツ型のアプリ内課金を実装する

MetaStore コンテンツ型のアプリ内課金を実装する

MetaStoreのコンテンツ型のアプリ内課金を実装する方法についてです。 コンテンツを追加する 右上のアドオンを作成ボタンを押す。 アドオンタイプ 一度購入したら、それ以降は購入しない設定は耐久型を選びます。アプリ内のコインや石など、消耗品は消耗品を選びます。 価格設定 価格設定タブに進むとコンテンツの価格を設定できます。有料のコンテンツをまだ登録したことない場合は支払い情報の設定が住んでいないはずなので、支払い情報の設定が先に必要になります。 DUC データユーズチェックアップ 左メニューの必要条件の中のデータ使用状況の確認を開きます。 例えばIAPでユーザー認識が必要な場合は User ID, ユーザー名が必要な場合は User Profile の追加ボタンを押します。 何に使うかの用途と説明が求められるのでそこに使用用途を記述してください。 ここまで出来たらリクエストを送信ボタンを押します。 このようにデータの取り扱いについて質問されるので答えてください。英語で書いてあるので、なんとなく何が書いてあるか順番にさらっと説明します。 データの使用状況の確認 左サイドバーから必要条件⇒データ使用状況の確認をクリックします。 これが設定されていないと以下の文言のポップアップが表示されます。 読んでくださった方へ 株式会社coiaiでは、Quest向け、PCVR、Vision OS向けの開発も得意としています。新規開発ももちろん、開発途中でメンバーが必要といった場合でも請け負えますので、ご相談ください!

Microsoft PowerToys 使わないのは損

Microsoft PowerToys 使わないのは損

普段MacユーザーでWindowsの歯がゆさを我慢している方は絶対に入れたほうがいい公式のアプリを紹介します。生産性のバク上がり間違いなし?です。 インストール パッケージマネージャから入れるも良し。WindowsStoreから入れるも良し。 https://learn.microsoft.com/ja-jp/windows/powertoys/install?tabs=store%2Cextract-094 特におすすめの機能 FancyZones(ウィンドウマネージャー) Windowsのスナップ機能の超強化版。自分で好きなウィンドウレイアウトを作成して、ドラッグするだけでウィンドウがピッタリ配置される。マルチモニター環境では特に神。 欲を言うなら固定したアプリを保存する機能がほしかった&#8230;&#8230;!!これに関してはほかのツールを試すしかなさそう。 PowerToys Run(クイックランチャー) Alt + Space でどこからでも起動。アプリ検索、ファイル検索、計算、Web検索、シェルコマンド実行など、プラグインで拡張可能。macOSのSpotlightやAlfredに相当する機能がWindowsで使える。 私は普段Mac使いなので、この機能がMicrosoftの純正として使えるのはかなりアツイ。 コマンドパレット win alt Space で起動。PowerToys Run との使い分けがじゃっかんめんどくさくて一緒になってたらよかったなと思う。 頻繁に使うコマンド・アプリ・ツールに1つのインターフェイスから素早くアクセスできる。カスタマイズ性が高い。 Keyboard Manager(キーリマッパー) キーの再マップやカスタムショートカットの作成ができる。CapsLockをCtrlに変えたり、独自のショートカットを定義したり。レジストリを触らなくていいのが楽。 Text Extractor(OCR) Win + Shift + T で画面上のどこからでもテキストをOCRで読み取ってコピーできる。スクリーンショットから文字を抜き出したいときに最高。日本語も対応。 これ普通に神機能過ぎてやばい。布教したい。 Advanced Paste(高度な貼り付け) クリップボードの内容を好きな形式に変換して貼り付け。プレーンテキスト化、JSON整形、Markdown変換など。AI機能もオプション で使える。 Light Switch ライトモードとダークモードが時間によって切り替わるようになる。 なぜ標準でつけない!? 日常で地味に助かる機能 ユーティリティ 概要 Always On Top Win + Ctrl + T でウィンドウを最前面に固定 [&hellip;]

デフォルトサムネイル

Obsidian 情報整理のディレクトリ構成をどうすべきか

はじめに この記事はObsidian等、ディレクトリの構成を決められるメモアプリで、どのように情報を保存していくかについてのメモです。 ノート遍歴 私はあまりこだわりがなく情報をまばらに散らかしていました。 Google Keep, Evernote, Notion, iOS 純正のメモ, 紙のメモ帳 様々なアプリを試してきましたが、最近では主戦力のメモをアナログな紙とMacのメモ帳という貧弱な装備に戻ってし待っていました。 しかし結局デバイスや場所を跨ぐとなると、統一されたフォーマットでデータを保管したいと思いたち、せっかくなのできちんと整理しようとなったわけです。 情報整理フレームワーク 5選 有名なフレームワークを調べてまとめてみました。 PARA Methodby Tiago Forte https://paramethod.com 情報を「行動との距離」で4つに分類するフレームワーク。最もシンプルで始めやすそうな印象があります。 向いている人:GTD的にタスクを進めたい人、仕事とプライベートを横断して管理したい人 Zettelkastenツェッテルカステン ↓この記事めっちゃ良いのでこんなブログ読むよりこれ読んでください。 https://zettelkasten.de/introduction ドイツの社会学者ニクラス・ルーマンが実践した手法。フォルダ分類に頼らず、ノート同士をリンクで繋いでいくことで知識のネットワークを構築します。Obsidianのグラフビューとの相性は抜群です。 ノートは1つにつき1アイデア(Atomic Note)を原則とし、[[リンク]]でノート同士を結びます。フォルダは最小限に留めるのがポイントです。 向いている人:研究者、ライター、知識を長期的に蓄積・発展させたい人 Johnny Decimal https://johnnydecimal.com 引用:「10 以下」というコンセプトが Johnny.Decimal の中心にあります。 10単位のカテゴリ番号で情報を厳密に管理するシステム。「あのファイルどこだっけ?」がなくなります。 向いている人:整理整頓が好き、大量のノートを厳密に分類したい人 ACCESSby Nick Milo(Linking Your Thinking) バランス型MOC活用 PARAとZettelkastenの良いとこ取りをしたフレームワーク。MOC(Map of Content)という索引ノートを中心に、フォルダとリンクの両方を活用します。 向いている人:フォルダもリンクもバランスよく使いたい人 PARA × Zettelkasten ハイブリッド 実用的おすすめ PARAのフォルダ構造で大枠を整理しつつ、Zettelkastenのリンク思想で知識を繋ぐ。迷ったらこれがおすすめです。 [&hellip;]

この記事を書いた会社

株式会社coiaiは、「想像できることを美しく実現」を掲げ、XR・Web・アプリ・システム開発およびDX支援を行う会社です。 創業2022年、東京都練馬区に本社を置き、要件のヒアリングからPoC(概念実証)、本番運用まで一貫して伴走します。 まずはお気軽にご相談ください。

商号株式会社 coiai創業2022年1月設立2025年1月23日資本金1,500,000円(設立時点)本社所在地東京都練馬区関町北 3-6-9代表者代表取締役 竹村 啓佑 / 代表取締役 服部 陽良

主なご相談内容

会社概要・役員紹介を見る

詳しい会社情報は会社概要ページでご覧いただけます。

資料請求・無料相談

導入要件のヒアリングからPoC、本番運用まで伴走します。まずはお気軽にご相談ください。

お問い合わせの前に 個人情報保護方針 をご確認ください。