想要利用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網頁爬蟲檔案,利用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實現動態網頁爬蟲文章,學會如何爬取登入後的網頁資料。
你可能有興趣的文章
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYqMPD_mPLEileg1IdrsIYhFSWZkYFKYmEnUqWqiqdiJv2XYnkT23CFcXoTN6HBtGCEUylgVoUIVKm6KPRPM_TjcjsSei4lGE_YmZdrWA6Ulw1fp6-o8Cn-bVwr7_FANFoC4tjTe-ak6w-atFYq-a1pipQbZvQzt4wHRNK7tywcSG0dSCnpJpqoMP5wA/s1600/Python%E7%B6%B2%E9%A0%81%E7%88%AC%E8%9F%B2%E5%85%8D%E8%B2%BB%E7%B7%9A%E4%B8%8A%E5%9F%B9%E8%A8%93.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-fK9Da5M7X1lSpbZVan4Eo-PunVnQv-YHw3EDahTUhZr5FayVLaCPqrW44W3_xwQQO-gAWZEwe_A-SxL_nltT__ArbFOgLYAAIsi3RzETT9GqVsfyfN9PXDs-xGTkxZSqj_W1SCxwD2UcrJLqHZSYIrLB-HIU75vSom4YoqoWFUQz_o4PbnvTQUbE6Bab/w640-h426/2.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg61JC7N1hyphenhyphenPpzb1hNJauunevoWrOsJxk_Upz0ywnLtIAJ2rdd1ZxChyphenhyphenFPq8GHYfywtHv2mTce5NGdwwxWFWYARhA6In0xlOzkwlRb9kM04mwgdy9Un9JgVCoLQnwV25oUcitQy2OY4TeA3gVIs067wR4StGfkldbykOeL3TfPchWfNClWKhL10ZzWaxFtf/w640-h426/3.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh1XFQE0AmkZHSFB0Icq3uY4_FdsIYZ9nUqllOlo9ulRu0ri-LS1OeW2ybKOO2QRg-gyUOUr_3sMLYf7S4Q5ULZpIcXsS1pAkSMPm0OwqpbnLET51WEpQ3EoY5WaEVEWyTixBkRqp2tA7SpePM_MCIY6tnyUvu917rulqbLJTEEPsEho6Q-4Tf74DFdakd/w640-h426/4.png)
留言
張貼留言