python+Selenium 模拟登陆豆瓣6.0

新版豆瓣在登陆窗口内嵌了一个iframe,所以采用selenium模拟登陆的时候,不能直接定位到登陆的输入框。

关于iframe的具体介绍可以百度,简单的说就是在网页内嵌入另一个网页,采用右键查看源代码是没办法检索iframe里面的代码的。在python里实现模拟登陆,需要先定位到iframe框架,再跳转到框架内对表单元素进行定位。

**这里讲一下模拟登陆的思路:**
1.采用webdriver的get方法打开网页
2.选择用密码进行登陆(定位+点击)
3.在inputtag输入用户名及密码(定位+输入),点击记住登陆状态按钮(定位+点击)
4.登陆(定位+点击登陆按钮)

下面是代码:
from selenium import webdriver

# chromedriver所在目录
driver_path = r'C:\Users\PycharmProjects\spyder\selenium package\chromedriver.exe'
driver = webdriver.Chrome(executable_path=driver_path)
driver.get('https://www.douban.com/')

# 找到登陆框架
iframe = driver.find_element_by_tag_name('iframe')
# 跳转到登陆框架
iframe = driver.switch_to.frame(iframe)

# 定位并点击【密码登陆】
psw_botton = driver.find_element_by_xpath('//li[contains(@class,"account-tab-account")]')
psw_botton.click()

# 定位并输入用户名
input1 = driver.find_element_by_name('username')
input1.send_keys('输入你的手机号或邮箱***')

# 定位并输入密码
input2 = driver.find_element_by_name('password')
input2.send_keys('输入你的密码***')

# 定位并点击【下次自动登录】
remember_botton = driver.find_element_by_id('account-form-remember')
remember_botton.click()

# 登陆
login_botton = driver.find_element_by_xpath('//a[contains(@class,"btn-account")]')
login_botton.click()

然后会跳转到登陆后的页面~

你可能感兴趣的:(爬虫笔记)