1. 程式人生 > >Selenium+chrome driver 實現模擬登陸

Selenium+chrome driver 實現模擬登陸

最近的專案都是在碼python多點,所以帖子也跟著來python了。。

最近爬資料的時候,發現有些動態載入網頁不是很友好。看了很多的帖子說,Selenium是個好東西。不過要配合著PhantomJS用。但是,Selenium與PhantomJS分手了!今年的事。。。眾多的帖子還是結合phantomJS的。人家已經不支援這種方法了。那麼現在流行的是:Selenium+Handless Chrome

說白了,就是Selenium結合一個webdriver。作為一個無頭瀏覽器,來讓爬取更簡單。

這裡的應用場景也很大啊,我拿這個來做自動化測試。。。

import time
from selenium import webdriver

#handless chrome的使用
driver = webdriver.Chrome('driver:path')  # Optional argument, if not specified will search path.
driver.get('http://www.baidu.com')

我這裡使用的環境是:python3+selenium+chromedriver(對應本機chrome版本)  還有點,必須chromedriver一定要對應上瀏覽器的版本。具體可以看官網給出的要求。上面的位置"path" 我是放在Anaconda的Script,在把它的系統的環境放好。

我的selenium是用pip裝的。 用Anaconda就用圖形化找到裝上就好。

pip install selenium

以上環境就大功告成。

現在嘗試下好玩的。

模擬瀏覽器登陸

from selenium import webdriver  
import time 
import sys
import pickle 
#selenium 模擬微博登陸  
sel = webdriver.Chrome()  

loginurl = 'http://weibo.com/'  
#open the login in page  
sel.get(loginurl)  
time.sleep(10)  


try:
    #這個是selenium的xpath用法找到網頁元素,傳一個值給他  
    sel.find_element_by_xpath("//*[@id='loginname']").send_keys('你的登陸賬號')  
    print('user success!')    
except:  
    print('user error!')  
time.sleep(1)  
#sign in the pasword  
try:  
    sel.find_element_by_xpath("//*[@id='pl_login_form']/div/div[3]/div[2]/div/input").send_keys('你的登陸密碼')  
    print('pw success!')  
except:  
    print('pw error!')  
time.sleep(1)  
#click to login  
try:  
    sel.find_element_by_xpath("//*[@id='pl_login_form']/div/div[3]/div[6]/a").click() #用click模擬瀏覽器點選 
    print('click success!')  
    
except:  
    print('click error!')  
time.sleep(3)  


上面是很簡單的模擬登陸實現,為什麼用try except,是用來debug的。可以檢查你找的定位是否正確。這是作為一名碼農的修養啊。後面會奉上處理爬取資料的高階用法。

有個使用文件可以參考: