PythonとSeleniumでWhatsAppチャットボットを作る方法
はじめに
この記事では、Pythonを使ってWhatsAppのチャットボットを作成する方法を解説します。TwitterやFacebook向けの一般的なチャットボットとは異なり、WhatsAppは運営ポリシーの関係上、プラットフォーム上で直接ボットを動かすことができません。
しかし、SeleniumというPythonの強力なパッケージを使えば、ブラウザの操作を自動化することでこれを実現できます。Seleniumを利用すれば、ブラウザ経由で「WhatsApp Web」を自由に操作できるのです。
必要なもの
準備が必要なのは、主に以下の3点です。
1. Selenium
Seleniumはpipを使って非常に簡単にインストールできます。ターミナル(コマンドプロンプト)で以下のコマンドを実行してください。
$ pip install selenium
2. Chrome / FirefoxなどのWebDriver
本記事ではChromeのWebDriverを使用します。お使いのOSに合わせて、下記のリンクからChromeDriverをダウンロードしてください。
https://chromedriver.storage.googleapis.com/index.html?path=2.46/
3. WhatsAppアカウント
WhatsAppアカウントが必要です。まだお持ちでない場合は、事前に新規登録しておきましょう。
サンプルコード:特定の連絡先にメッセージを送信する
以下は、PythonからSeleniumを操作して、特定の連絡先やグループにWhatsAppのメッセージを送信するシンプルなプログラムです。
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
import sys
# 以下のパスを、ご自身のPC上のchromedriverの絶対パスに置き換えてください
driver = webdriver.Chrome(r'c:\users\rajesh\Desktop\chromedriver')
driver.get("https://web.whatsapp.com/")
wait = WebDriverWait(driver, 600)
# 'My Bsnl' を送信先の友人名またはグループ名に置き換えてください
target = '"My Bsnl"'
# 送信したいメッセージ本文に置き換えてください
string = sys.argv[1]
x_arg = '//span[contains(@title,' + target + ')]'
group_title = wait.until(EC.presence_of_element_located((
By.XPATH, x_arg)))
print (group_title)
print ("数秒お待ちください")
group_title.click()
message = driver.find_elements_by_xpath('//*[@id="main"]/footer/div[1]/div[2]/div/div[2]')[0]
message.send_keys(string)
sendbutton = driver.find_elements_by_xpath('//*[@id="main"]/footer/div[1]/div[3]/button')[0]
sendbutton.click()
driver.close()
スクリプトの実行方法
上記のスクリプトをコマンドプロンプトから実行し、送信したいメッセージを引数として渡します。
>python whatsppPython.py "Hello" DevTools listening on ws://127.0.0.1:12954/devtools/browser/a5bb04bd-66a3-4002-999f-6a0824f591da <selenium.webdriver.remote.webelement.WebElement (session="83e7034b9a6f6b49e9e422e655f270d3", element="0.30994636046479007-1")> after wait …. …..
コマンドを実行すると、Chromeブラウザが起動し、次のような画面が表示されます。

QRコードをスキャンして連携する
スマートフォンのWhatsAppアプリを開き、上部のバーにある「WhatsApp Web」を選択して、PC画面に表示されたQRコードをスキャンしてください。
認証が完了すると、指定した連絡先(ここでは「My Bsnl」)に対してメッセージが送信されていることを確認できます。

注意点
Selenium 4以降では
find_elements_by_xpath()メソッドが廃止されています。driver.find_element(By.XPATH, "...")の形式に書き換えて使用してください。ChromeDriverのバージョンは、インストール済みのChromeのバージョンと一致させる必要があります。動作しない場合はバージョンを確認しましょう。
WhatsApp Webの画面構成(XPath)は仕様変更により変わることがあるため、うまく動作しない場合は最新のHTML構造に合わせて調整が必要です。
-
Pythonで始める機械学習入門|基本の流れと主要ライブラリ、実装サンプルを徹底解説
本記事では、Python 3.x(それ以前のバージョンでも可)を使った機械学習の基礎について解説します。環境構築から実際にモデルを動かすところまで、初心者の方にもわかりやすく順を追って見ていきましょう。機械学習環境のセットアップまずは、既存のライブラリを活用して機械学習の実行環境を整えます。以下のコマンドで必要なパッケージをインストールしてください。>>> pip install numpy>>> pip install scipy>>> pip install matplotlib>>> pip install scik
-
PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法
はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c