來個續:因為一些其他原因,很久沒有寫代碼了。最近,本來想做個模擬登陸百家號的模擬登陸的程序,但是百度旋轉圖片驗證一直沒搞定,准備用selenium去完成,然后就想找個練練手的,淘寶模擬登陸的坑就踩上了。
遇到過的問題:
網上的能人異士挺多,大部分帖子也看了,不少都有小下次,好多都是過不了淘寶系統檢測到webdriver,抓包方式能夠找到原因,js返回給服務器的數據不一樣,這個不多說了。三條代碼搞得定,問題是這個搞定了之后,依然會出現煩人的滑動條,並且怎么操作都沒用,調速度也不好用,后來發現不是這個原因,滑動條出現的時候是在定位元素之后發生的,所以只要有find_element_by相似的定位功能出現,淘寶服務器一定會反爬到你,好家伙,這個我們不用了,我打開登陸界面sleep一會,一切都是手動操作,登錄后,獲取頁面信息,成功了!現在問題就變成把人工做這部分不用selenium的方式給搞定,我也是各種百度,知道有個叫pyautogui的庫可以實現,相關功能,於是現學現賣,二合一一不小心就成功了。
上個簡版的代碼,過程中如果出問題了,可能得多安裝幾個庫。
from selenium import webdriver as wb import pyautogui import PIL # 設置速度 pyautogui.PAUSE = 0.5 # 這三行是切換到開發者模式 options = wb.ChromeOptions() options.add_experimental_option('excludeSwitches', ['enable-automation']) browser = wb.Chrome(options=options) # 窗口最大化保證坐標正確 browser.maximize_window() browser.get('https://login.taobao.com/member/login.jhtml') # 在當前屏幕中查找指定圖片(圖片需要由系統截圖功能截取的圖) # 00.jpg是截取好的密碼登錄圖片 coords = pyautogui.locateOnScreen('00.jpg') # 獲取定位到的圖中間點坐標 x, y = pyautogui.center(coords) # 左擊 pyautogui.leftClick(x, y) # 這里切換過來后,光標直接就在 用戶名 那里,省了不少麻煩 pyautogui.typewrite(用戶名) # 填充完用戶名之后,tab切換下就是密碼了 pyautogui.press('tab') pyautogui.typewrite(密碼) # 3.jpg是截圖好的登陸圖片 coords = pyautogui.locateOnScreen('3.jpg') # 獲取定位到的圖中間點坐標 x, y = pyautogui.center(coords) pyautogui.leftClick(x, y) # 打印html ,ok可以搜索到你的登陸用戶名,也可以實現其他操作了 print(browser.page_source)
聲明下哈:我不擅長寫博文,就是看大家不少人卡在模擬登陸這里了,寫了個簡單的,讀不懂的就多看幾遍,我就寫個原理,兩小時內就能實現!祝你成功啦,還不懂就給我留言吧,大家互相幫助。