1. 程式人生 > 程式設計 >利用python Selenium實現自動登陸京東簽到領金幣功能

利用python Selenium實現自動登陸京東簽到領金幣功能

如何自動登陸京東?

我們先來看一下京東的登陸頁面,如下圖所示:

【插入圖片,登陸頁面】

登陸框就是右面這一個框框了,但是目前我們遇到一個困吶,預設的登陸方式是掃碼登陸,如果我們想要以使用者民個、密碼的形式登陸,就要切換一下。

我們看一下這兩種登陸方式是如何切換的,通過瀏覽器的元素檢查,我們看一下兩個標籤。

【插入圖片,兩種登陸方式】

掃碼登陸和使用者登陸分別在一個div標籤裡面,我們可以通過css選擇器選定使用者登陸,使其下面的a標籤的class為checked,接下來的一切就比較簡單了。

我們要獲取到使用者名稱輸入框、密碼輸入框以及登陸按鈕即可。

【插入圖片,使用者登陸框】

下面看一下實現的程式碼,假設我們通過FireFox瀏覽器模擬登陸吧。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
import time
login_url='https://passport.jd.com/uc/login'
uid='********'
pwd='********'
browser=webdriver.Firefox()
wait=WebDriverWait(browser,10)
def login():
  try:
    browser.get(login_url)
    login_tab_u=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div.login-tab:nth-child(3)")))
    login_tab_u.click()#這裡我們沒有獲取那個a標籤,而是直接獲取外層的div標籤,比較簡單而且方便
    uid_input = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"#loginname")))
    pwd_input=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"#nloginpwd")))
    login_button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"#loginsubmit")))
    uid_input.send_keys(uid)
    pwd_input.send_keys(pwd)
    login_button.click()
  except TimeoutException:
    login()
def main():
  login()
  time.sleep(5)
  browser.close()
if __name__=='__main__':
  main()

如何自動簽到領金幣?

領金幣一定要登陸vip頁面才可以。

vip頁面的url='https://vip.jd.com/home.html‘

但是要登陸vip頁面的話,還是會跳轉到第一步的那個登陸頁面,我們利用第一步的方法登陸即可。

【插入圖片,簽到頁面】

簽到的連結在右側,我們獲取到這個連結點選就行了。

【插入圖片,簽到連結】

這個標籤很簡單。

vip_url='https://vip.jd.com/home.html'
def user_singin():
  try:
    browser.get(vip_url)
    login_tab_u=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div.login-tab:nth-child(3)")))
    login_tab_u.click()
    uid_input = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"#loginsubmit")))
    uid_input.send_keys(uid)
    pwd_input.send_keys(pwd)
    login_button.click()
    sign_in_button=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"#signIn")))
    sign_in_button.click()
    print('您已簽到成功!')
  except TimeoutException:
    user_singin()

前面的程式碼跟上面是一樣的,只不過要獲取到簽到的標籤。

這種登陸方式基本上可以用於任何網站,只不過做一些修改就可以了。

總結

以上所述是小編給大家介紹的利用python Selenium實現自動登陸京東簽到領金幣功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!