清华社英语在线自动教程python版

本文介绍了如何使用Python和VSCode开发清华社外语助手,包括图像识别验证码、登录及语音题目的处理。通过二值化图像识别验证码,并对接第三方语音SDK进行口语评测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:博文代码功能已经集成到下面的小程序中了

清华社外语助手

先上结果图:
在这里插入图片描述

教程正文:
一、首先需要安装python运行环境,推荐下载python3.6以上,因为登录验证码识别库pil 需要用到levenstin 图像相似都对比,貌似低于3.5的版本不支持。安装时最好勾选添加python路径到系统,这样可以直接在命令行中调用。

二、下载Vscode 开发工具,安装python插件
python支持库
python官网下载地址:
(https://www.python.org/downloads/)
三、复制代码到编辑器,保存为shuati.py 文件,ctrl+~ 调出命令行模式,输入 python shuati.py 即可自动完成题目
一、登录:
1.解决验证码:验证码基本都是像下面这样子
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.解决思路:可以看到中间加了其他颜色的干扰,但验证码本身以蓝色为主,可以对图像每个像素点获取其rgb色值,提取蓝色分量较大的色值,从而进行二值化,二值化后 提取每个象限的投影特征值,下面的代码中把背景色设为0,主题色设为1。

	# !/usr/bin/env python3
	# @Description : 清华社英语在线自动做题和时长
	# @Author : wx ooooops0301
	# @Email : 1846093422@qq.com
	# @File : shuati.py
def OCR_lmj(imageData):
    # image = Image.open(img_path)  # 打开图片文件
    image = Image.open(io.BytesIO(imageData))
    # image = imageData
    cols, rows = image.size  # 90,30  cols:列数=90  rows:行数=30
    data = np.zeros([rows, cols], dtype=int)
    for i in range(0, rows):
        for j in range(0, cols):
            r, g, b = image.getpixel((j, i))
            # print(r, g, b)
            if r < 55 and g < 55 and b > 75:
                data[i][j] = '1'
            else:
                data[i][j] = '0'


3.制作验证码字库0-9,a-z的不同方向的投影特征值,不同的截取规则,生成的字符特征值是不一样的,你需要根据自己的截取规则获取特征值。有了标准特征值,只需要对比每个字符与标准库里面哪个最相近,就可达到识别的目的。这里我把用到的字符都扒了下来,可以参考,其中有个别可能有两种,分别记录。

	# !/usr/bin/env python3
	# @Description : 清华社英语在线自动做题和时长
	# @Author : wx ooooops0301
	# @Email : 1846093422@qq.com
	# @File : shuati.py
def search(data):
    goalDatas = {
   
        '0': ['0008e84444448e8000000', '486444444444444684'],
        '1': ['00004444ii22220000000', '4642222222222222aa'],
        '2': ['000566666688a60000000', '6a53222232222233bb'],
        '3': ['000224666667ca4000000', '6922222167322234a6'],
        '4': ['0035556554hh222000000', '343444444444dd222'],
        '5': ['0002ba666688a60000000', '992222784322223497'],
        '6': ['0008dc9866688a6000000', '584322798755546785'],
        '7': ['000223678787520000000', 'bb2232222322223222'],
        '8': ['0008e8a6666a8e8000000', '6a64444688644446a6'],
        '9': ['0006a8866689cd8000000', '587645557897223485'],
        'a': ['00467566667ba00000000', '672227a5457a7'],
        'a_1': ['00477666667ca00000000', '69322895457a7'],
        'b': ['000ii6444446695000000', '222227a754444457a7'],
        'c': ['005954444444000000000', '5842222222475'],
        'd': ['005966444446ii0000000', '222227a754444457a7'],
        'e': ['005986666666640000000', '58544cc222396'],
        'f': ['0022gh444400000000000', '452228822222222222'],
        'g': ['005988666679gf0000000'
编写一个清华大学会学在线脚本Python本,通常需要使用网络爬虫技术来自动化获取目和提交答案的过程。以下是一个简化的框架示例: ```python import requests from bs4 import BeautifulSoup # 定义函数,获取网页内容 def get_problem_content(url): response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') problem_data = soup.find('div', class_='problem-content') # 根据实际网站结构找到问部分 return problem_data # 定义函数,处理并提交答案 def submit_answer(form_data, answer): form_url = 'https://example.com/submit' # 假设这是提交表单的URL headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.post(form_url, data=form_data, headers=headers, json={'answer': answer}) if response.status_code == 200: print('Answer submitted successfully.') else: print('Failed to submit, response code:', response.status_code) # 使用示例 url = 'http://example.tsinghua.edu.cn/problem' # 清华英语在线平台的目页面URL problem_html = get_problem_content(url) # 解析HTML获取目信息和输入框数据 form_data = {} # 这里假设表单字段名分别为'name_1', 'name_2' for input_tag in problem_html.find_all('input'): name = input_tag['name'] value = input_tag.get('value', '') form_data[name] = value # 用户手动填写答案 answer = input('Please enter your answer: ') # 提交答案 submit_answer(form_data, answer) ``` 请注意,这个例子是基于假设的清华英语在线平台的HTML结构和表单提交方式。实际操作时,你需要查看目标网站的源码来确定正确的元素选择和数据提交方式。同时,尊重网站的Robots.txt协议,并确保你的行为符合网站的服务条款。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值