iT邦幫忙

2022 iThome 鐵人賽

DAY 25
1

今天以登入facebook為例,使用selenium爬取網頁的位置,並且輸入信箱以及密碼完成登入。

開始之前

在開始之前需要先安裝selenium套件

pip install selenium

安裝完成後,需要先安裝瀏覽器的webdriver,在執行python時需要有這個驅動程式才能開啟瀏覽器。本範例以Google Chrome為例,其他的瀏覽器可以上網搜尋安裝方法。首先,需要先了解你的Chrome瀏覽器目前的版本,先點選瀏覽器右上角的三個點。

https://ithelp.ithome.com.tw/upload/images/20221012/20145688RySweVkzkG.jpg

接著點選設定
https://ithelp.ithome.com.tw/upload/images/20221012/20145688CxzwSQxheR.jpg

點進去後,左邊有一排選項,選取關於Chrome
https://ithelp.ithome.com.tw/upload/images/20221012/20145688ZjpsTvGXFS.jpg

接著,頁面就會顯示你的瀏覽器版本,以及是否有最新的版本需要更新。以我的瀏覽器為範例,為106.0.5249.119,版本以前三個數字為主,因此我的版本是106。
https://ithelp.ithome.com.tw/upload/images/20221012/201456886AQYgtLPgQ.png

接著,到chrome webdriver下載的頁面下載106版本的webdriver。

程式碼

執行程式碼時需要一起執行,我將一段一段介紹程式碼的用意。

首先,先設置操作網頁時,不顯示操作過程,如果想看操作過程,可以將options.add_argument那行註解掉。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
from urllib.request import urlopen

option = Options()
#操作網頁是不顯示網頁 manipulate the browser invisibly
option.add_argument("-headless")

接著,設置webdriver的路徑位置,並且拜訪facebook網站。如果想至其他網站可以更改facebook的網址。

driver_path = 'C:/Users/User/Downloads/chromedriver_win32/chromedriver.exe'
chrome = webdriver.Chrome(driver_path, options=option)
chrome.get("https://www.facebook.com/")

在facebook的HTML裡,email輸入位置的id為email,密碼的欄位id為password。
https://ithelp.ithome.com.tw/upload/images/20221012/20145688gqCv3uwjsf.png

如果想要輸入信箱,需先抓取信箱欄位的位置,所使用的函數為find_element(),第一個參數需輸入想抓取的標籤名稱,如id、name、tag name等等,有許多標籤可以指定,詳細資訊請參考官方網站說明。原本的函數為find_element_by_id這個形式,前陣子已被修改成find_element,需要特別注意。

輸入資料時使用send_keys(),將資料輸入指定的HTML欄位。email與password需修改成自己的資料,最後寄送帳號與密碼,並且關閉瀏覽器。因為想讓讀者看到寄送後的結果,因此註解掉最後一行程式碼。

email = chrome.find_element("id", "email")
password = chrome.find_element("id", "pass")

time.sleep(5)
email.send_keys('xxxxx@gmail.com')
password.send_keys('xxxxxx')
password.submit()

#關閉瀏覽器 close the browser
#chrome.close()

完整的程式碼


from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
from urllib.request import urlopen

option = Options()
#操作網頁是不顯示網頁 manipulate the browser invisibly
#option.add_argument("-headless")
driver_path = 'C:/Users/User/Downloads/chromedriver_win32/chromedriver.exe'
chrome = webdriver.Chrome(driver_path, options=option)
chrome.get("https://www.facebook.com/")
email = chrome.find_element("id", "email")
password = chrome.find_element("id", "pass")

time.sleep(5)
email.send_keys('xxxxx@gmail.com')
password.send_keys('xxxxxx')
password.submit()

#關閉瀏覽器 close the browser
#chrome.close()

謝謝您的瀏覽,程式碼已上傳Github
/images/emoticon/emoticon29.gif


上一篇
【Day 26】網路爬蟲 - Beautiful Soup篇
下一篇
【Day 28】長短期記憶網路 Long short-term memory
系列文
從機器學習到深度學習 - 30天搞懂常見演算法的基礎理論30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言