跳到主要內容

教你學會Python網頁爬蟲自動化登入網站的秘訣

python_scraper_login_website

想要利用Python網頁爬蟲蒐集網路上的資料,除了一般網頁之外,有些還會需要進行"登入"的動作,才會顯示網頁資料,這也就是所謂的登入型網頁,最常見的像是Facebook、Instagram等社群網站。

這時候就可以利用Python的Selenium套件來模擬登入的動作,進而爬取到想要的資料。這篇文章我就用Facebook網站為例,來教大家Python網頁爬蟲如何利用Selenium套件來自動化登入網站。

  • Python Selenium網頁爬蟲專案初始化
  • Python網頁爬蟲輸入登入資料
  • Python網頁爬蟲登入網站

一、Python Selenium網頁爬蟲專案初始化

在開始實作之前,先利用以下指令安裝Selenium、Webdriver Manager套件:

$ pip install selenium webdriver-manager

接著,建立Python網頁爬蟲檔案,引用Selenium相關的模組,如下:

from selenium import webdriver  # 瀏覽器驅動模組
from webdriver_manager.chrome import ChromeDriverManager  # Chrome瀏覽器驅動模組
from selenium.webdriver.chrome.options import Options  # 瀏覽器選項設定模組
from selenium.webdriver.common.by import By  # 定位元素模組
import time  # 時間模組

詳細的Selenium模組介紹及引用時機,可以參考全面掌握Selenium建置動態網頁爬蟲的步驟與重要模組文章,對於後續想要利用Python網頁爬蟲爬取動態網頁的朋友,一定要學起來!

引用好之後,就可以建立Selenium的瀏覽器驅動物件,發送請求到Facebook網站,如下範例:

options = Options()
options.add_argument("--disable-notifications") # 取消瀏覽器的通知訊息

# 安裝及啟動Chrome瀏覽器
driver = webdriver.Chrome(ChromeDriverManager().install(), chrome_options=options)

# 發送請求到Facebook網站
driver.get('https://www.facebook.com/')

二、Python網頁爬蟲輸入登入資料

再來,就要定位帳號、密碼欄位,來輸入登入資料。打開Facebook網站,在帳號、密碼輸入框的地方點擊滑鼠右鍵,選擇「檢查」,可以分別看到它們的原始碼如下:

python_scraper_login_website

回到Python網頁爬蟲檔案,利用Selenium套件的By模組,來定位帳號、密碼欄位,如下範例:

# 定位帳號欄位
email = driver.find_element(By.ID, "email")

# 定位密碼欄位
password = driver.find_element(By.ID, "pass")

呼叫Selenium套件的send_keys()方法,分別輸入帳號、密碼資料,如下範例:

# 定位帳號欄位
email = driver.find_element(By.ID, "email")

# 定位密碼欄位
password = driver.find_element(By.ID, "pass")

# 輸入帳號欄位資料
email.send_keys("你的帳號")

# 輸入密碼欄位資料
password.send_keys("你的密碼")

三、Python網頁爬蟲登入網站

輸入完資料之後,就可以呼叫Selenium套件的submit()方法,送出帳號、密碼等表單資料,進行登入的動作,如下範例:

#定位帳號欄位
email = driver.find_element(By.ID, "email")

#定位密碼欄位
password = driver.find_element(By.ID, "pass")

#輸入帳號欄位資料
email.send_keys("你的帳號")

#輸入密碼欄位資料
password.send_keys("你的密碼")

#送出表單資料
password.submit()

執行程式碼,就可以看到Python網頁爬蟲自動化登入網站了。

四、小結

以上就是Python網頁爬蟲自動化登入網站的3個步驟,基本上,就是利用Selenium套件發送請求到目標網站,定位需要輸入的登入欄位元素,輸入資料且送出之後,就可以進行登入的動作。接下來,可以接續看整合Python Selenium及BeautifulSoup實現動態網頁爬蟲文章,學會如何爬取登入後的網頁資料。

你可能有興趣的文章










留言