近期在利用网络资源学习python爬虫,最近学到了webdriver浏览器驱动+selenium模块的使用,其中有个实战项目是以上内容实现QQ空间的模拟登录。话不多说,下面开始讲解。
前期准备:
首先我们需要用到selenium,time这两个主要模块以及浏览器驱动程序,首先安装selenium模块:
在pycharm的最底端找到终端(Terminal)选项,点击
然后输入: pip install selenium
下载该模块。
然后安装webdriver相关驱动程序,我使用的是edge浏览器相关的驱动程序
首先我们需要查看当前edeg浏览器的版本,打开浏览器,点击右上角三个点,点击设置,点击关于Microsoft Edge 查看浏览器的版本
根据当前浏览器的版本去下面的网址查看并下载相应的浏览器驱动:Microsoft Edge WebDriver - Microsoft Edge Developer
下载并解压,注意我们需要将解压后的.exe后缀的程序放到要运行的py程序的同级目录中,如下图
pycharm中记载的edge浏览器的驱动程序的名称是 ’MicrosoftWebDriver‘ 所以我们需要把名称进行更改,最后就可以编程啦!
编程:
首先导入相关的模块
然后创建浏览器对象
使浏览器对象向对应网址发送请求
因为登录等具体的内容都在frame框架中,所以我们需要转到该框架中
由于进入该网站后自动转到扫二维码登录的页面,我们需要点击账号密码登录,下面的代码就是执行该操作。根据解析的html中找到对应标签的id,并且执行click操作,模拟鼠标点击
下一步需要录入账号密码,我们还是先到解析的html标签中找到对应的id,然后执行sen_keys ,即在找到的标签中输入账号,出于隐私,我使用了’*‘来代替,大家可以使用自己的账号密码进行测试
录入密码,和上一步相似
录入完账号密码后我们需要登录了,还是在在解析的html中找到相关的标签对应的id,然后还是执行click操作模拟鼠标点击,这里sleep是为了防止录入完账户密码后立即登录导致看不到效果
最后在登录成功的页面停留几秒再退出就可以啦!
最终效果 如下所示
最后附源码
# 马子哥最帅!
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
edge = webdriver.Edge()
edge.get('https://qzone.qq.com/')
edge.switch_to.frame('login_frame')
a_tag = edge.find_element(By.ID, 'switcher_plogin')
a_tag.click()
userName_tag = edge.find_element(By.ID, 'u')
userName_tag.send_keys('*****')
password_tag = edge.find_element(By.ID, 'p')
password_tag.send_keys('*****')
sleep(1)
login = edge.find_element(By.ID, 'login_button')
login.click()
sleep(3)
edge.quit()