Python
 Computer >> コンピューター >  >> プログラミング >> Python

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ブラウザが起動し、次のような画面が表示されます。

PythonとSeleniumでWhatsAppチャットボットを作る方法

QRコードをスキャンして連携する

スマートフォンのWhatsAppアプリを開き、上部のバーにある「WhatsApp Web」を選択して、PC画面に表示されたQRコードをスキャンしてください。

認証が完了すると、指定した連絡先(ここでは「My Bsnl」)に対してメッセージが送信されていることを確認できます。

PythonとSeleniumでWhatsAppチャットボットを作る方法

注意点

  • Selenium 4以降では find_elements_by_xpath() メソッドが廃止されています。driver.find_element(By.XPATH, "...") の形式に書き換えて使用してください。

  • ChromeDriverのバージョンは、インストール済みのChromeのバージョンと一致させる必要があります。動作しない場合はバージョンを確認しましょう。

  • WhatsApp Webの画面構成(XPath)は仕様変更により変わることがあるため、うまく動作しない場合は最新のHTML構造に合わせて調整が必要です。

  1. Pythonで始める機械学習入門|基本の流れと主要ライブラリ、実装サンプルを徹底解説

    本記事では、Python 3.x(それ以前のバージョンでも可)を使った機械学習の基礎について解説します。環境構築から実際にモデルを動かすところまで、初心者の方にもわかりやすく順を追って見ていきましょう。機械学習環境のセットアップまずは、既存のライブラリを活用して機械学習の実行環境を整えます。以下のコマンドで必要なパッケージをインストールしてください。>>> pip install numpy>>> pip install scipy>>> pip install matplotlib>>> pip install scik

  2. PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法

    はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c