在爬取需要输入账号密码的网页时,我们需要找到可填写内容的标签。记得之前写过,但是没有记住。

这回重新梳理一下,如何可找到这个标签

以极验后台登录网站为例: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),来等待网络 注意在模块中已有延时等待。延时等待分为隐式等待,与显式等待,显式等待效果好一些,在之后的内容会有应用
 
05-28 17:18