本实验主要以广东省政务服务网为例、主要步骤大致如下:
1、进入广东省政务服务网登录界面拿到urlurl:https://tyrz.gd.gov.cn/pscp/sso/static/?redirect_uri=http%3A%2F%2Fwww.gdzwfw.gov.cn%2F_goin_%2F%3Fr%3D%252F_in_%252F%253Fp%253Dportal%2526r%253D%25252F&client_id=gdbsYSS2、使用driver的find_element_by_xpath拿到输入框、图片和按钮的位置 3、验证码识别(使用ddddocr库)
下载图片下载到本地、使用ddddocr读取识别
主要代码如下所示:
import ddddocr
from selenium import webdriver
import time
import urllib.request
path = 'F:Environmentpython3.7.9chromedriver_win32chromedriver.exe'
driver = webdriver.Chrome(executable_path=path)
zhanghao = ''
mima = ''
ocr = ddddocr.DdddOcr()
def login():
url = 'https://tyrz.gd.gov.cn/pscp/sso/static/?redirect_uri=http%3A%2F%2Fwww.gdzwfw.gov.cn%2F_goin_%2F%3Fr%3D%252F_in_%252F%253Fp%253Dportal%2526r%253D%25252F&client_id=gdbsYSS'
# 进入登录界面
driver.get(url)
time.sleep(2)
try:
driver.find_element_by_xpath('//*[@id="app"]/div/div[2]/div[2]/div[2]/div/div[2]/div/div[2]/div[1]/div[2]/div[2]/a[1]').click()
driver.find_element_by_xpath(
'//*[@id="app"]/div/div[2]/div[2]/div[2]/div/div[2]/div/div[2]/div[1]/div[1]/form/div[1]/div/div[1]/input').send_keys(
zhanghao)
driver.find_element_by_xpath(
'//*[@id="app"]/div/div[2]/div[2]/div[2]/div/div[2]/div/div[2]/div[1]/div[1]/form/div[2]/div/div[1]/input').send_keys(
mima)
# 拿到验证码图片
img = driver.find_element_by_xpath(
'//*[@id="app"]/div[1]/div[2]/div[2]/div[2]/div/div[2]/div/div[2]/div[1]/div[1]/form/div[3]/div/div[2]/img')
spath = "./code.jpg"
# 下载到本地
urllib.request.urlretrieve(img.get_attribute("src"), spath)
# 二进制流读取
with open("./code.jpg", "rb") as file:
f_bytes = file.read()
# ddddocr识别
res = ocr.classification(f_bytes)
if len(res) < 4:
login()
else:
driver.find_element_by_xpath(
'//*[@id="app"]/div/div[2]/div[2]/div[2]/div/div[2]/div/div[2]/div[1]/div[1]/form/div[3]/div/div[1]/input').send_keys(
res)
driver.find_element_by_xpath('//*[@id="app"]/div/div[2]/div[2]/div[2]/div/div[2]/div/div[2]/div[1]/div[1]/form/div[5]/div/button').click()
except Exception:
# 出现异常继续登录
login()
login()
注:
1、安装ddddocr库 pip install ddddocr 2、zhanghao和mima使用自己的
3、 可能会出现识别错的验证码登录不成功,不过也好处理,这里就不展示了



