失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python模拟登录163邮箱_python selenium模拟登陆163邮箱。

python模拟登录163邮箱_python selenium模拟登陆163邮箱。

时间:2019-05-08 17:47:24

相关推荐

python模拟登录163邮箱_python selenium模拟登陆163邮箱。

selenium是可以模拟浏览器操作。

有些爬虫是异步加载的,通过爬取网页源码是得不到需要的内容。所以可以模拟浏览器去登陆该网站进行爬取操作。

需要安装selenium通过pip install xxx安装,如果你使用的Anaconda3,可以使用conda install xxx这些都是可以

值得一提的是,需要下载chromdriver,就是chrome浏览器的驱动。百度搜索下载,下载之前看你的chrome的版本是几,应该下载比你浏览器的版本更高的驱动版本。

比如:我的chrome是74,那么你可以下载74以后的,75等。

然后把chromedriver放在python安装程序主目录下,

也就是说,你的python.exe在哪个目录,你把chromedriver放在那就可以了。

importtimefrom selenium importwebdriverfrom mon.by importBy"""使用selenium进行模拟登陆

1.初始化ChromDriver

2.打开163登陆页面

3.找到用户名的输入框,输入用户名

4.找到密码框,输入密码

5.提交用户信息"""name= 'xxxxxxxx'passwd= 'xxxxxx'driver=webdriver.Chrome()

driver.get('/')#将窗口调整最大

driver.maximize_window()#休息5s

time.sleep(5)

current_window_1=driver.current_window_handleprint(current_window_1)

button= driver.find_element_by_id('lbNormal')

button.click()

driver.switch_to.frame(driver.find_element_by_xpath("//iframe[starts-with(@id, 'x-URS-iframe')]"))

email= driver.find_element_by_name('email')#email = driver.find_element_by_xpath('//input[@name="email"]')

email.send_keys(name)

password= driver.find_element_by_name('password')#password = driver.find_element_by_xpath("//input[@name='password']")

password.send_keys(passwd)

submit= driver.find_element_by_id("dologin")

submit.click()

time.sleep(10)print(driver.page_source)

driver.quit()

问题:

在使用过程中,始终iframe这个元素,提示driver.find_element_by_name找不到。

然后通过chrome的开发者工具,找了iframe.如下图:

邮箱输入框和密码输入框在iframe中。但是这个iframe id="x-URS-iframe156xxxxxx"后面的数字是一个时间戳。是唯一的,而且name竟然也是设置为“”,

所以通过driver.find_element_by_name通过属性获取或者driver.find_element_by_id通过id获取都是提示找不到。

那该怎么办???

driver.find_element_by_xpath("//iframe[starts-with(@id, 'x-URS-iframe')]")

通过使用xpath获取,并且是ids属性是“x-URS-iframe”开头的,就可以动态的获取这个iframe。

问题来了,为什么要获取iframe。

因为看代码有一个

driver.switch_to.frame()

切换界面,因为通过开发者工具可以看到,输入密码和用户名都是在iframe下,如果不切换到这个iframe.那么始终是找不到。

还有一个问题就是,

通过浏览器登陆163,开始显示的是一个扫描QRcode二维码进入邮箱。我们想要的是输入邮箱和密码的界面。

所以代码中:

button = driver.find_element_by_id('lbNormal')

button.click()

这个就是获取切换的界面的按钮,点击切换到输入界面。

以下是模拟,仅供参考

如果觉得《python模拟登录163邮箱_python selenium模拟登陆163邮箱。》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。