主要實現功能:
- 登陸網頁
- 動態等待網頁加載
- 驗證碼下載
很早就有一個想法,就是自動按照腳本執行一個功能,節省大量的人力——個人比較懶。花了幾天寫了寫,本著想完成驗證碼的識別,從根本上解決問題,只是難度太高,識別的準確率又太低,計劃再次告一段落。
希望這次經歷可以與大家進行分享和交流。
Python打開瀏覽器
相比與自帶的urllib2模塊,操作比較麻煩,針對于一部分網頁還需要對cookie進行保存,很不方便。于是,我這里使用的是Python2.7下的selenium模塊進行網頁上的操作。
測試網頁:http://graduate.buct.edu.cn
打開網頁:(需下載chromedriver)
為了支持中文字符輸出,我們需要調用sys模塊,把默認編碼改為 UTF-8
<code class="hljs python">from selenium.webdriver.support.ui import Select, WebDriverWaitfrom selenium import webdriverfrom selenium import commonfrom PIL import Imageimport pytesserimport sysreload(sys)sys.setdefaultencoding('utf8')broswer = webdriver.Chrome()broswer.maximize_window()username = 'test'password = 'test'url = 'http://graduate.buct.edu.cn'broswer.get(url)</code> 等待網頁加載完畢
使用的是selenium中的WebDriverWait,上面的代碼中已經加載
<code class="hljs livecodeserver">url = 'http://graduate.buct.edu.cn'broswer.get(url)wait = WebDriverWait(webdriver,5) #設置超時時間5s# 在這里輸入表單填寫并加載的代碼elm = wait.until(lambda webdriver: broswer.find_element_by_xpath(xpathMenuCheck))</code>
元素定位、字符輸入
接下來我們需要進行登錄操作:這里我使用的是Chrome,右鍵選擇需要進行填寫內容的部分,選擇檢查,會自動轉跳到 F12下的開發者模式(全程需要這個功能來找到相關的資源)。
vczKprbLJnJkcXVvO9Gh1PHT0LnYtcSyv7fWPGJyIC8+DQo8aW1nIGFsdD0="這里寫圖片描述" src="http://m.survivalescaperooms.com/uploadfile/Collfiles/20160414/20160414092144893.png" style="margin: 0px; padding: 0px; line-height: 25.2px; width: 660px; overflow: hidden; clear: both;">
<code class="hljs sql">select = Select(broswer.find_element_by_id('UserRole'))select.select_by_value('2')name = broswer.find_element_by_id('username')name.send_keys(username)pswd = broswer.find_element_by_id('password')pswd.send_keys(password)btnlg = broswer.find_element_by_id('btnLogin')btnlg.click()</code> 



























