该模拟登录的具体思路是通过输入用户名、密码以及验证码的方式登录到页面。打印出登录到的html页面查看页面是否是登录成功的页面。
当利用selenium进行模拟登录时方法如下:
from selenium import webdriver
import time
import sys
import pickle
import requests
chrome_driver = 'C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe'
sel = webdriver.Chrome(executable_path=chrome_driver)
#登录界面的url
loginurl = '登录界面的url'
sel.get(loginurl)
time.sleep(10)
session = requests.session()
agent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"
#header的内容在登录界面按f12,network下即可找到其对应的host、Referer。
header = {
"HOST":"",
"Referer":"",
"User-Agent":agent
}
#获取验证码图片,并手动将其输入
def get_captcha():
import time
t = str(int(time.time()*1000))
captcha_url = "xxxxxx"
t = session.get(captcha_url, headers=header)
with open("captcha.jpg","wb") as f:
f.write(t.content)
f.close()
from PIL import Image
try:
im = Image.open('captcha.jpg')
im.show()
im.close()
except:
pass
captcha = input("输入验证码\n>")
return captcha
try:
sel.find_element_by_xpath("//*[@id='swy']").send_keys('用户名')
print('user success!')
except:
print('user error')
time.sleep(1)
try:
sel.find_element_by_xpath("//*[@id='swm2']").send_keys('密码')
print('pw success')
except:
print('pw error!')
time.sleep(1)
#验证码登录
try:
sel.find_element_by_xpath("//*[@id='verifyCode']").send_keys(get_captcha())
print('verifyCode success')
except:
print('verifyCode error!')
time.sleep(1)
#点击登录页面
try:
sel.find_element_by_xpath("//*[@id='submit']").click() # 用click模拟浏览器点击
print('click success!')
except:
print('click error!')
time.sleep(3)
print(sel.page_source)
with open('index.html','wb')as f:
# 存入需要bytes格式 使用.endcode('utf-8)
f.write(sel.page_source.encode('utf-8'))
sel.close()
用这样方式去登录的时候发现我模拟登录的登录页面验证码所在的url页面的图片是不断变化的,它跟登录页面所出现的验证码图片显示的内容是不一样的因此无法登录到所在的页面。可以通过将get_captcha()函数进行了修改,将登录页面截图成一个图片查看图片内容将验证码输入即可登录到你想登录的页面。