瀏覽器模擬登陸的主要技術點在於:python
1.如何使用python的瀏覽器操做工具seleniumweb
2.簡單看一下網頁,找到賬號密碼對應的框框,要知道python開啓的瀏覽器如何定位到這些chrome
1、使用selenium打開網頁瀏覽器
from selenium import webdriver url = 'https://passport.cnblogs.com/user/signin' driver = webdriver.Firefox() driver.get(url)
以上幾句執行即可以打開博客園的登陸界面,開啓瀏覽器可能較慢,耐心等一下.cookie
之前的selenium能夠直接打開firefox,如今的須要安裝geckodriver,本身百度下載一個對應本身瀏覽器的型號的.工具
chrome一直都須要驅動,使用chrome的須要設置的可能麻煩一點.推薦看一下蟲師的相關文章,我的以爲講得不錯,百度搜索出來仍是比較靠前的.url
2、找到賬號密碼對應的頁面元素spa
瀏覽器打開頁面,點擊f12,按上圖步驟,找到了用戶名的id"input1",同理找到密碼的id,找到後發現是"input2".firefox
3、將本身的用戶名和密碼填入selenium打開的瀏覽器code
使用find_element_by_id方法找到元素,再使用send_keys方法傳入參數,最後使用click方法點擊登陸按鈕便可.
成品代碼有以下幾句:
# /usr/bin/python # encoding: utf-8 import time from selenium import webdriver def login(username, password): # url = 'https://passport.cnblogs.com/user/signin' # 使用這個url登陸成功後定位到園子 url = 'https://passport.cnblogs.com/user/signin?ReturnUrl=https%3A%2F%2Fwww.cnblogs.com%2F' # url中指明定位到博客園首頁 driver = webdriver.Firefox() driver.get(url) # print driver.title name_input = driver.find_element_by_id('input1') # 找到用戶名的框框 pass_input = driver.find_element_by_id('input2') # 找到輸入密碼的框框 login_button = driver.find_element_by_id('signin') # 找到登陸按鈕 name_input.clear() name_input.send_keys(username) # 填寫用戶名 time.sleep(0.2) pass_input.clear() pass_input.send_keys(password) # 填寫密碼 time.sleep(0.2) login_button.click() # 點擊登陸 time.sleep(0.2) print driver.get_cookies() time.sleep(2) print driver.title driver.close() if __name__ == "__main__": user = "Masako" pw = "*****" login(user, pw)
使用time模塊sleep主要是爲了控制操做速度,防止被認爲是機器人,比較符合現實的狀況應該隨機sleep時間.
上述代碼執行以後(注意將用戶名密碼換成本身的),能夠看到打開了瀏覽器,並自動填寫了賬號密碼,自動點擊登陸,成功後跳轉,而後自動關閉瀏覽器.
本地能夠看到打印了一份cookie和一個標題"博客園 - 開發者的網上家園".
若是登陸失敗,打印的標題會是"用戶登陸 - 博客園".
若是報錯,未打開瀏覽器,多半是沒有安裝geckodriver.
上述代碼會打開瀏覽器界面,若不想看到界面,可採用如下手段:
if __name__ == "__main__": from pyvirtualdisplay import Display display = Display(visible=0, size=(1366, 768)) display.start() user = "Masako" pw = "*****" login(user, pw) display.stop()
在調用瀏覽器的時候使用Display包裹,並將dispaly設置爲不可見(visible=0)