当前位置: 首页 > news >正文

网站建设维护与管理实训总结博物馆建设网站的目的及功能

网站建设维护与管理实训总结,博物馆建设网站的目的及功能,吉林市建设局网站,开源商城小程序目的 书接上文#xff0c;学以致用——植物信息录入#xff08;seleniumpandasostkinter) 更新要点#xff1a; tkinter界面#xff1a;自动登录、新增#xff08;核心功能#xff09;、文件夹选择、流程台selenium自动化操作#xff1a;验证码识别excel数据#xf…目的 书接上文学以致用——植物信息录入seleniumpandasostkinter) 更新要点 tkinter界面自动登录、新增核心功能、文件夹选择、流程台selenium自动化操作验证码识别excel数据精准匹配key获取相应value 操作优化 只需登录一次即可操作员可以在当前文件夹完成后继续选择新的文件夹运行循环往复。验证码识别解放操作员手动登录录入表单的数据准确无误 后续 对物种信息的正确性验证自动跳转至属级提交表单tkinter添加用户选择 回头看 ddddocr库搭配PIL库可以便捷地进行验证码图片识别在本项目中完美地承担了读取验证码的任务。对于更复杂的验证码还没有验证。selenium自动化操作网页时在本项目后期运行期间由于网络波动导致了大量的定位元素失败。由此我认识到WebDriverWait详情请看代码中在等待页面元素加载是至关重要的且应用尽用。selenium在定位frame等元素时总是无法通过id、name、link_text等方法实现具体原因未知。但可以采用遍历所有frame元素再通过索引定位。tkinter图形化是我比较常用的也比较熟悉。或许将selenium内嵌在tkinter图形化里面有更好的用户体验。未来可以多试验试验。 整体代码 import pandas as pd import time import os from tkinter import * from tkinter.filedialog import askdirectory from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.keys import Keys import ddddocr from PIL import Imageclass Main:def __init__(self):self.root Tk()self.root.attributes(-topmost, 1) # 保持tkinter界面处于顶层方便点击操作self.signin Button(self.root, text登录系统, commandself.sign_in) # 登录按钮self.signin.grid(row0, column0)self.addnew Button(self.root, text新增, commandself.add_new, stateDISABLED) # 新增按钮self.addnew.grid(row0, column1)self.folder StringVar()Label(self.root, textvariableself.folder).grid(row1, column0) # 显示文件夹路径self.choose_folder Button(self.root, text选择操作文件夹, commandself.inspect_folder, stateDISABLED) # 选择按钮self.choose_folder.grid(row1, column1)self.console Text(self.root) # 显示台self.console.grid(row2, column0, columnspan2)self.console.insert(0.0, 首先点击《登录》按钮完成用户登录后再点击《选择操作文件夹--属级文件夹》最后点击《新增》\n) # 初始显示简易操作流程self.driver webdriver.Chrome(serviceService(rD:\ALL_Softwares\Python 3.10.4\Scripts\chromedriver.exe))self.driver.maximize_window()self.wait WebDriverWait(self.driver, 100)self.root.mainloop()def sign_in(self):try:self.driver.get(http://www.cn-flora.ac.cn:28080/plantonline/frame/toLoginPage)self.wait_for_send(_loginName, id, user) # 用户名self.wait_for_send(_loginPwd, id, pwd) # 密码self.wait.until(lambda d: d.find_element(By.ID, authImage)) # 等待验证码图片加载完成self.driver.save_screenshot(rscreenshot.png) # 截屏img_element self.driver.find_element(By.ID, authImage) #定位到验证码元素location img_element.location # 获取验证码坐标size img_element.size # 获取验证码长宽zoom 1.2 # 我的电脑是1.5rangle (int(location[x] * zoom), int(location[y] * zoom), int(location[x] * zoom size[width] * zoom),int(location[y] * zoom size[height] * zoom)) # 根据电脑显示不同配置合适的裁剪大小i Image.open(rscreenshot.png) # 打开截屏frame4 i.crop(rangle) # 裁剪frame4 frame4.convert(RGB)frame4.save(rimg.png) # 保存验证码图片ocr ddddocr.DdddOcr() # 实例化验证码识别类with open(rimg.png, rb) as r:img_bytes r.read()res ocr.classification(img_bytes) # 完成识别self.wait_for_send(loginValidCode, name, res) # 验证码self.driver.find_element(By.NAME, loginValidCode).send_keys(Keys.ENTER) # 回车登录self.send_to_console(自动登录成功选择操作文件夹已激活请点击操作)self.choose_folder.config(stateACTIVE) # 激活选择操作文件夹self.signin.config(stateDISABLED) # 登录按钮失活self.root.update()os.remove(rimg.png)os.remove(rscreenshot.png)except:self.send_to_console(登录过程出现错误请检查网络连接后重新尝试登录)def send_to_console(self, message, end\n):self.console.insert(END, messageend)self.console.see(END)self.root.update()def wait_for_send(self, element, element_type, content):if element_type name:self.wait.until(lambda d: d.find_element(By.NAME, element))self.driver.find_element(By.NAME, element).send_keys(u%s % content)elif element_type tag:self.wait.until(lambda d: d.find_element(By.TAG_NAME, element))self.driver.find_element(By.TAG_NAME, element).send_keys(u%s % content)elif element_type id:self.wait.until(lambda d: d.find_element(By.ID, element))self.driver.find_element(By.ID, element).send_keys(u%s % content)def wait_for_click(self, element, element_type):if element_type name:self.wait.until(lambda d: d.find_element(By.NAME, element))self.driver.find_element(By.NAME, element).click()elif element_type tag:self.wait.until(lambda d: d.find_element(By.TAG_NAME, element))self.driver.find_element(By.TAG_NAME, element).click()elif element_type id:self.wait.until(lambda d: d.find_element(By.ID, element))self.driver.find_element(By.ID, element).click()elif element_type link:self.wait.until(lambda d: d.find_element(By.LINK_TEXT), element)self.driver.find_element(By.LINK_TEXT, element).click()elif element_type xpath:self.wait.until(lambda d: d.find_element(By.XPATH, element))self.driver.find_element(By.XPATH, element).click()def inspect_folder(self):folder askdirectory()if folder:self.folder.set(folder)self.send_to_console(f成功读取 {folder})self.send_to_console(f请在网页中选择至{folder.split(/)[-1]})self.choose_folder.config(stateDISABLED)filelist os.listdir(folder)self.send_to_console(f读取到{len(filelist)}个文件请点击新增开始运行)self.addnew.config(stateACTIVE)else:self.send_to_console(未检测到选择操作文件夹请选择)def add_new(self):folder self.folder.get()count 0total len(os.listdir(folder))for file in os.listdir(folder):count 1filepath os.path.join(folder, file)self.send_to_console(f{count} / {total} {file} 处理中..., end--)self.send_to_console(处理数据中..., end--)info self.read_species(filepath)self.send_to_console(f{info}, end--)self.driver.switch_to.default_content()n self.driver.find_elements(By.TAG_NAME, iframe)[1]self.driver.switch_to.frame(n)o self.driver.find_elements(By.TAG_NAME, frame)[1]self.driver.switch_to.frame(o)p self.driver.find_elements(By.TAG_NAME, button)p[2].click()# 定位到录入表单self.driver.switch_to.default_content()q self.driver.find_elements(By.TAG_NAME, iframe)self.driver.switch_to.frame(q[1])r self.driver.find_elements(By.TAG_NAME, frame)[1]self.driver.switch_to.frame(r)wait WebDriverWait(self.driver, 100)wait.until(lambda d: d.find_element(By.NAME, acName))if info[物种中文名] ! :self.driver.find_element(By.NAME, acName).send_keys(u%s % info[物种中文名])else:self.driver.find_element(By.NAME, acName).send_keys(u%s % info[物种学名])wait.until(lambda d: d.find_element(By.NAME, acKeywords))self.driver.find_element(By.NAME, acKeywords).send_keys(u%s % info[物种学名])wait.until(lambda d: d.find_element(By.NAME, acExtendProperties))self.driver.find_element(By.NAME, acExtendProperties).send_keys(u%s % info[俗名信息])wait.until(lambda d: d.find_element(By.NAME, acRemark))self.driver.find_element(By.NAME, acRemark).send_keys(u%s % info[分类概念依据])wait.until(lambda d: d.find_element(By.TAG_NAME, iframe))self.driver.switch_to.frame(self.driver.find_element(By.TAG_NAME, iframe))self.driver.find_element(By.TAG_NAME, p).send_keys(u%s % info[形态特征])self.driver.switch_to.parent_frame()wait.until(lambda d: d.find_element(By.NAME, acKuozhan3))self.driver.find_element(By.NAME, acKuozhan3).send_keys(u%s % info[国内分布])wait.until(lambda d: d.find_element(By.NAME, acKuozhan4))self.driver.find_element(By.NAME, acKuozhan4).send_keys(u%s % info[国外分布])wait.until(lambda d: d.find_element(By.NAME, acKuozhan5))self.driver.find_element(By.NAME, acKuozhan5).send_keys(u%s % info[生境])self.driver.find_element(By.TAG_NAME, button).submit()time.sleep(1)# wait WebDriverWait(driver, 10)wait.until(EC.alert_is_present()) # 等待录入成功弹窗出现self.driver.switch_to.alert.accept() # 确定成功time.sleep(1) # 等待页面刷新os.remove(filepath) # 防止意外终止后无法区分是否录入成功后删除EXCEL文件self.root.update()self.send_to_console(新建成功并已删除文件)self.send_to_console(f已完成{folder}。可能存在文件无法检测到的情况请检查文件夹中是否有未读取文件如有请更改文件名后再次操作继续选择操作文件夹或关闭界面)self.choose_folder.config(stateACTIVE)staticmethoddef read_species(filepath):try:df pd.read_excel(filepath, sheet_name物种百科, keep_default_naFalse)except:df pd.read_excel(filepath, sheet_nameSheet1, keep_default_naFalse)info {物种学名: , 物种中文名: , 分类概念依据: , 俗名信息: , 形态特征: , 生境: , 国内分布: , 国外分布: }for key, item in info.items():for row in df.itertuples():for value in row:if key str(value).strip():info[key] row[4].strip()breakreturn infoif __name__ __main__:a Main()当勉 程序当如诗一般简单、简约。当然也不会一蹴而就不断打磨才成精品。
http://www.hkea.cn/news/14272505/

相关文章:

  • 天猫网站建设的优势有哪些网站几个页面
  • 网站开发有哪些职位百度站长提交
  • 徐闻手机网站建设公司网页制作的公司推荐时代创信
  • 数据库修改网站后台密码html5国内网站
  • 关于省钱的网站名字域名的申请及注册流程
  • 创建网站app广告公司简介模板200字
  • 免费做ppt的网站有哪些wordpress设置移动端模版
  • 大型网站开发公司邯郸小程序
  • 网站建设银行业务预约纪念币猪年纪念币预约北京网站备案速度
  • 淘宝关键词排名查询网站WORDPRESS导购主题 WYZDG
  • 北京网站建设 seo公司最吸引人的引流话术
  • 免费广州网站开发维护黄骅做网站|黄骅网站|黄骅百度优化|黄骅百度推广|黄骅微信|黄骅
  • 建站平台费用网站培训中心
  • 房屋装修效果图卧室新手学做网站优化
  • 整站快速排名河南那家做网站实力强
  • 济南企业网站制京东app下载平台
  • 做网站网页兼容性ios应用程序开发
  • 韩国电信 网站2018企业网站优化应该怎么做
  • 益阳建设局网站做瓜子进出口用哪些网站
  • 建手机网站要多少钱南宁网站快
  • 网站恶意点击wordpress支付宝移动端
  • 宁波网站建设rswl做外贸用什么浏览国外网站
  • 网站建设 提供源码视觉传达设计主要学什么
  • 网上投资网站建设开发公众号 微网站开发
  • 定制做网站技术哈尔滨工程研究生招生信息网
  • 延吉有没有做网站的网站做权重的方法
  • 南京网站设计建设推荐外链工具软件
  • 深圳最新招聘seo综合查询站长工具怎么用
  • 有可以做国外支付系统的网站吗佛山优化网站
  • 网站跳出率高的原因聚名网备案域名