这里模拟登陆会用到selenium这个自动化测试的工具,先介绍一下这个工具。
selenium
selenium是一个web的自动化测试工具,最初是为网站自动化测试而开发的,selenium可以直接运行在浏览器上,它支持所有主流的浏览器,可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏
selenium的简单实用
首先selenium需要进行安装,安装比较简单。直接通过pip install selenium
就可以了。
selenium安装完成之后还需要下载对应的驱动,这里需要一定要下载与浏览器对应的驱动,比如我的谷歌浏览器的版本是73.0.3683.103,那么就要下载对应版本的selenium的驱动,这里给大家两个网站。
selenium下载地址
http://chromedriver.storage.googleapis.com/index.html
Selenium对浏览器支持的版本
http://www.cnblogs.com/iceb/p/7195876.html
接下来以百度为例讲解selenium的简单使用
from selenium import webdriver
import time
wd = webdriver.Chrome()
# 设置窗口大小
# wd.set_window_size(1280,800)
# 全屏
wd.maximize_window()
# 输入网址
wd.get('http://www.baidu.com')
# 截图
wd.save_screenshot("baidu.png")
# 找到输入框
kw = wd.find_element_by_id('kw')
# 在输入框中输入酒店
kw.send_keys("酒店")
# 点击百度一下
wd.find_element_by_id('su').click()
time.sleep(3)
wd.quit()
上面的案例中,如果没有把selenium添加到系统环境变量中程序会报错。这里可以指定路径来使用executable_path='./driver/chromedriver.exe'
模拟登陆微博PC端
driver = webdriver.Chrome()
# 隐式等待
driver.implicitly_wait(10)
driver.set_window_size(1200,1000)
driver.get('https://weibo.com/')
# 填写账号
driver.find_element_by_id('loginname').send_keys('账号')
# 通过xpath找到密码的输入框
driver.find_element_by_xpath("//div[@class='info_list password']/div/input").send_keys(pwd)
# 通过xpath找到登陆按钮进行点击
driver.find_element_by_xpath("//div[@class='info_list login_btn']/a").click()
这里账号密码可以写在配置文件中
加载配置文件
from configparser import ConfigParser
target = ConfigParser()
target.read('test.ini',encoding='utf-8')
pwd = target.get('weibo','password')
test.ini文件
[weibo]
password = '密码'
模拟登陆微博移动端
这里用PC端模拟移动端,可以用谷歌浏览器来模拟,F12打开控制台管理工具
接下来大家可以发现,移动端要比PC端简单的多,因为所有的标签都有ID。代码如下:
driver.get('https://passport.weibo.cn/signin/login')
driver.find_element_by_id('loginName').send_keys('账号')
driver.find_element_by_id('loginPassword').send_keys(pwd)
driver.find_element_by_id('loginAction').click()
driver.find_element_by_id("getCode").click()