PythonでSeleniumを使ってFacebookログインの自動化をする方法

スポンサーリンク

今日の記事では、Pythonを使ってFacebookに自動ログインしてみます。

これはPythonのSelenium Webドライバを使ったWebブラウザの自動化を垣間見ることができる楽しい実験になるでしょう。

スポンサーリンク

Prerequisites

さて、このチュートリアルを進める前に、Pythonに特定のライブラリをインストールする必要があります。

これらのライブラリによって、ブラウザへのログインがとても簡単になります。

ここではPythonのSelenium webdriverモジュールを使用します。

このモジュールは、ドライバプログラムを使ってWebブラウザ(Chrome / Firefox)を制御することができます

しかし、ブラウザと一緒にSeleniumを使用するには、そのブラウザ(Chrome/Firefox)用のドライバをインストールする必要があります。

それらをインストールするために、別のPythonモジュールの助けを借りることにします。

selenium webdriverを手動でダウンロードする代わりに、このモジュールをインポートするだけです。

このモジュールをインポートするだけで、すべての要件を自動的に取得することができます

それでは、pip マネージャーを使って、必要なパッケージを pip install してみましょう。

pip install selenium
pip install webdriver_manager


必要なパッケージのインストールが完了したら、コードを書き始めましょう。

Facebookへのログインを自動化するスクリプトを作成する

まず、必要なモジュールをインポートしましょう。


webdriver_managerと同様にselenium` も必要です。

from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager
from webdriver_manager.chrome import ChromeDriverManager
import time

ここでは、Selenium のコアモジュールである webdriver クラスが必要です。

また、firefox/chromeで使用するので、必要なWebDriversをロードする必要があります。

さて、今回は以下のURLでログインします。

LOGIN_URL = 'https://www.facebook.com/login.php'

さて、ログイン機能をクラスとして実装します。

クラス名は FacebookLogin とします。

init()` を呼び出すと、selenium webdriver のセッションが初期化されます。


email と password の両フィールドを webdriver セッションに送る必要があるので、入力として受け取ります。

最後に、Webdriver から GET リクエストで LOGIN_URL を取得します。

class FacebookLogin():
    def __init__(self, email, password, browser='Chrome'):
        # Store credentials for login
        self.email = email
        self.password = password
        if browser == 'Chrome':
            # Use chrome
            self.driver = webdriver.Chrome(executable_path=ChromeDriverManager().install())
        elif browser == 'Firefox':
            # Set it to Firefox
            self.driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
        self.driver.get(LOGIN_URL)
        time.sleep(1) # Wait for some time to load

さて、これでクラスのインスタンスが初期化されました。

さて、ログインするために、login() という別のメソッドを作り、ログインを行うことにします。

ログインするためには、ログイン要素(htmlページでは emailpass )に入力を与える必要があります。

Seleniumには find_element_by_id() メソッドがあり、対応する要素を自動的に見つけてくれます。

キーボード入力を送信するには、 element.send_keys(input) を直接使用することができます!

def login(self):
    email_element = self.driver.find_element_by_id('email')
    email_element.send_keys(self.email) # Give keyboard input
 
    password_element = self.driver.find_element_by_id('pass')
    password_element.send_keys(self.password) # Give password as input too
 
    login_button = self.driver.find_element_by_id('loginbutton')
    login_button.click() # Send mouse click
 
    time.sleep(2) # Wait for 2 seconds for the page to show up

APIがいかにシンプルであるかに注目してください。

最後に、time.sleep() を使って、プログラムがウェブページを読み込むのに時間をかけます。

以下に完全なコードをお見せします。

main` モジュールの中で、適切なログイン情報を使用することを確認してください。

from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager
from webdriver_manager.chrome import ChromeDriverManager
import time
 
 
LOGIN_URL = 'https://www.facebook.com/login.php'
 
class FacebookLogin():
    def __init__(self, email, password, browser='Chrome'):
        # Store credentials for login
        self.email = email
        self.password = password
        if browser == 'Chrome':
            # Use chrome
            self.driver = webdriver.Chrome(executable_path=ChromeDriverManager().install())
        elif browser == 'Firefox':
            # Set it to Firefox
            self.driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
        self.driver.get(LOGIN_URL)
        time.sleep(1) # Wait for some time to load
 
 
 
    def login(self):
        email_element = self.driver.find_element_by_id('email')
        email_element.send_keys(self.email) # Give keyboard input
 
        password_element = self.driver.find_element_by_id('pass')
        password_element.send_keys(self.password) # Give password as input too
 
        login_button = self.driver.find_element_by_id('loginbutton')
        login_button.click() # Send mouse click
 
        time.sleep(2) # Wait for 2 seconds for the page to show up
 
 
if __name__ == '__main__':
    # Enter your login credentials here
    fb_login = FacebookLogin(email='sample@example.com', password='PASSWORD', browser='Firefox')
    fb_login.login()

うまくいけば、ブラウザにあなたのホームページが表示されるはずです。

これで、facebookへのログインは成功です。

まとめ

今回は、PythonとSeleniumを使って、Facebookへのログインを素早く自動化する方法について学びました

タイトルとURLをコピーしました