1. 程式人生 > >用selenium模擬登陸知乎賬號,處理登陸介面隨機出現驗證碼視窗的問題

用selenium模擬登陸知乎賬號,處理登陸介面隨機出現驗證碼視窗的問題

import requests
from selenium import webdriver
from bs4 import BeautifulSoup
import time
while True:
    #option = webdriver.ChromeOptions()
    #option.set_headless()
    #因為要手動輸入驗證碼,所以無頭模式註釋掉
    driver = webdriver.Chrome(r'C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe')
    driver.get('http://www.zhihu.com'
) driver.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[2]/div[2]/span').click() driver.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[2]/div[1]/form/div[1]/div[2]/div[1]/input').send_keys('手機登陸賬號') driver.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[2]/div[1]/form/div[2]/div/div[1]/input'
).send_keys('賬號密碼') input('請檢視網頁是否要輸入驗證碼,如果有請手動輸入,輸入完請回車確認,沒有直接回車!') driver.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[2]/div[1]/form/button').click() time.sleep(5)#等待提交後介面載入 #因為有兩種驗證碼,故輸入提交後,對輸入後的兩種可能結果進行檢查,如果輸入驗證碼錯誤,程式繼續執行,提示重新登陸 try: foo = driver.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[2]/div[1]/form/div[3]/div/div/div[2]'
) if foo.text == '請提交正確的驗證碼 :(': print('您輸入的驗證碼錯誤,稍等後出現新的登陸,再確認!') driver.quit() continue except: pass try: foo = driver.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[2]/div[1]/form/div[3]/div/div[1]/span') if foo.text == '請提交正確的驗證碼 :(': print('您輸入的驗證碼錯誤,稍等後出現新的登陸,再確認!') driver.quit() continue except: pass print('驗證碼輸入正確,已經成功登陸!') cookies = driver.get_cookies()#儲存好登陸COOKIE後續網路爬蟲要用到 break driver.quit()