在爬取需要輸入賬號密碼的網頁時,我們需要找到可填寫內容的標簽。記得之前寫過,但是沒有記住。
這回重新梳理一下,如何可找到這個標簽
以極驗后台登錄網站為例:https://auth.geetest.com/login/
代碼:D:\spider1111111111111111ex\venv\滑塊驗證碼\CrackGeetest-master\crack.py
初始化
url = 'https://account.geetest.com/login'
browser = webdriver.Chrome() #谷歌瀏覽器的模擬driver
self.wait = WebDriverWait(self.browser, 20)
self.email = EMAIL
self.password = PASSWORD
browser.get(self.url) #get請求
email = self.browser.find_element_by_xpath('//input[@placeholder="請輸入郵箱"]')
password = self.browser.find_element_by_xpath('//input[@placeholder="請輸入密碼"]')
email.send_keys(self.email)
password.send_keys(self.password)
#這是自動輸入賬號密碼的代碼
可是在找尋輸入標簽的時候進入了誤區,一直沒有做有些忘了,一時沒有想明白就用百度重新試驗了下。在百度的input中是這樣的
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">,。
之后又輸入了內容查看,是這樣的:
<input id="kw" name="wd" class="s_ipt" value="p我輸入的內容" maxlength="255" autocomplete="off">
確認了輸入的內容確實進入了標簽input的屬性value中了
注意:在查看源碼時檢查下的Element,里面的代碼不是完整的,有javesprict動態是看不到的,需要在Network下選擇www.baidu.com(例百度)Respone中。
回到極驗后台登錄中,用XPath找到input標簽,
email = self.browser.find_element_by_xpath('//input[@placeholder="請輸入郵箱"]')
再用send_kets()發送
email.send_keys(self.email)
這樣就可成功輸入賬號密碼了。還可以調用time.sleep(5),來等待網絡
注意在模塊中已有延時等待。延時等待分為隱式等待,與顯式等待,顯式等待效果好一些,在之后的內容會有應用