Python Selenium是一個用于自動化Web瀏覽器操作的庫。它提供了一組功能強大的工具和API,可以模擬用戶在瀏覽器中的行為,并執行各種任務,如點擊、輸入文本、提交表單等。
要使用Python Selenium登錄1688網站,需要進行以下步驟:
- 安裝Selenium庫:在Python環境中,可以使用pip命令安裝Selenium庫。
pip install selenium
-
下載并配置瀏覽器驅動程序:Selenium需要一個特定的瀏覽器驅動程序來與瀏覽器交互。對于Chrome瀏覽器,可以下載ChromeDriver;對于Firefox瀏覽器,可以下載geckodriver。將驅動程序放在系統路徑中,或者指定其路徑。
-
導入必要的模塊:在Python腳本中,首先要導入selenium模塊,以及WebDriver對象(用于控制瀏覽器)和Keys對象(用于模擬鍵盤輸入)。
from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.by import By
- 創建WebDriver實例:根據使用的瀏覽器類型,創建相應的WebDriver實例。例如,對于Chrome瀏覽器:
driver = webdriver.Chrome()
- 打開1688網站:使用WebDriver打開1688網站的登錄頁面。
driver.get("https://www.1688.com/")
- 定位并輸入登錄憑據:使用WebDriver的find_element方法找到用戶名和密碼的輸入框,并使用send_keys方法輸入相應的憑據。
- 提交登錄表單:使用WebDriver的submit方法提交登錄表單。
以下是完整代碼:
import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import Byprint('使用selenium模擬登陸')
# 使用selenium模擬登陸,獲取并返回cookie
username = ''
password = ''
options = webdriver.ChromeOptions() ?# 聲明瀏覽器的對象
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_argument('--disable-blink-features')
options.add_argument('--disable-blink-features=AutomationControlled') ?# 去除瀏覽器selenium監控
#options.add_argument('--headless') ?# 瀏覽器不提供可視化頁面
options.add_argument('--disable-gpu') ?# 禁用GPU加速
browser = webdriver.Chrome(options=options)
browser.get('https://login.1688.com/')
time.sleep(1)
browser.find_element(By.XPATH, '//*[@id="fm-login-id"]').send_keys(username)
time.sleep(1)
browser.find_element(By.XPATH, '//*[@id="fm-login-password"]').send_keys(password)
time.sleep(1)
browser.find_element(By.XPATH, '//*[@type="submit"]').click()
time.sleep(4)
# 檢查是否出現了滑動驗證碼
try:slider = browser.find_element(By.XPATH, ?'//*[@id="nc_1_n1z"]')ActionChains(browser).click_and_hold(slider).perform() ?# 按住滑塊ActionChains(browser).move_by_offset(300, 0).perform() ?# 移動到最右邊ActionChains(browser).pause(0.5).release().perform() ?# 松開鼠標
except:pass
# cookies_dict = {cookie['name']: cookie['value'] for cookie in driver.get_cookies()}
# driver.quit()
# print(cookies_dict)