python实现模拟登录云课堂智慧职教并获取课程信息(1)

1.搭建python环境

(1)下载python 教程地址
(2)python编辑工具我是用的是pythoncharm
安装教程
可以自己百度一些破解的教程,但是很多都不管用,不知道为什么,现在ieda公司的软件怎么那么难破解
(3)常见库的导入,我是用的是cmd导入的,可以自己配置环境变量,实现cmd下载库
介绍几个常见的库pip必备的selenium库selenium库的教程,lxml库,等等吧,先摸索这些,
(4)还有一个最终要的就是模拟登录需要进行浏览器处理的时候需要安装驱动
安装浏览器驱动
Selenium3.x调用浏览器必须有一个webdriver驱动文件,Chrome驱动文件下载和配置教程下载配置教程
代码中的使用如下所示

driver =webdriver.Chrome(executable_path ="D:\Google\Chrome\Application\chromedriver.exe")
driver.get(url)

以上环境满足后那么我们就开始一步一步的走下去

2.实现过程

1.实现打开模拟打开云课堂智慧职教网站

from selenium import webdriver
from time import sleep
url='https://www.icve.com.cn/portal_new/portal/portal.html'
driver =webdriver.Chrome(executable_path ="D:\Google\Chrome\Application\chromedriver.exe")
driver.get(url)
driver.set_window_size(1400,800)

打开效果

2.实现模拟打开并登陆云课堂智慧职教网站

上图已经打开了,我们现在只需要找到点击登录的标签即可,然后通过代码实现登录的点击,通过打开云课堂的官网,然后点击F12可以找到标签,
在这里插入图片描述
通过代码实现点击登录

driver.find_element_by_xpath('//a[@class="login-link"]').click()

接下来就是需要输入我们的账号密码来实现登录

driver.find_element_by_name('username').send_keys('23113443')
driver.find_element_by_name('pwd').send_keys('你的密码')

这个时候我们会发现验证码没办法输入啊,验证码是随机的啊如何解决这个问题呢,首先我通过百度了解了,可以使用pytesseract来进行识别,教程
通过上方的代码获取的验证码图片并对图片进行保存的代码是有问题的,通过实践发现保存的验证码图片和显示的验证码图片和点击图片网站跳转的二维码图片三者都不一样,于是这个方法存在问题,放弃继续百度.

采取了通过截取的方式实现l对于验证码图片的保存,而且与我们原先的代码非常匹配,

from selenium import webdriver
from PIL import Image
from time import sleep
import pytesseract
url='https://www.icve.com.cn/portal_new/portal/portal.html'
file_name = "C:/Users/Chen/Desktop/python/test.png"
driver =webdriver.Chrome(executable_path ="D:\Google\Chrome\Application\chromedriver.exe")
driver.get(url)
driver.set_window_size(1400,800)
driver.save_screenshot(file_name)
code_element = driver.find_element_by_xpath(".//*[@class='img_verifycode']")
left = code_element.location['x']
top = code_element.location['y']
right = code_element.size['width']+left
height = code_element.size['height']+top
im = Image.open(file_name)
# 3.截取图片验证码
img = im.crop((left, top, right, height))
# 4.截取的验证码图片保存为新的文件
img.save(file_name)
code_text = pytesseract.image_to_string(Image.open(file_name))
print(code_text)

但是通过识别的结果发现准确率真的低得让你无法想象,然后接着百度,发现了两种实现的方式,一种是直接使用专门的OCR识别接口,例如百度图片识别的接口,一种是通过对于保存的图片进行处理然后识别里面的内容,由于技术点较多,期待解决后发下一篇

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值