当前位置: 首页 > 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.w-s-a.com/news/686843/

相关文章:

  • godaddy网站建设教程微信手机网站搭建
  • 网站建设 商城淄博网站制作哪家好
  • 廊坊手机网站团队国际贸易进口代理公司
  • 运用django做网站网站建设问题及解决办法
  • 商丘企业网站服务c mvc 网站开发
  • 太仓建设工程网站广州seo排名外包
  • 成都的教育品牌网站建设做网站不给提供ftp
  • 建站行业市场人力管理系统
  • qq钓鱼网站在线生成器google关键词搜索工具
  • 化妆网站模板移动网站建设模板
  • 欢迎访问语文建设杂志网站网站蓝色配色
  • 最新网站发布重庆城乡建设部网站首页
  • 网站建设费用高鄂尔多斯seo
  • dw做网站怎么发布网站无后台可以上框架
  • 网络公司如何建网站网站的建设需要多少钱
  • 代刷网站推广快速泉州网页定制
  • 网站优秀网站地址做宣传册的公司
  • 苏州高端网站建设咨询wordpress云图插件
  • 河北省建设厅网站重新安装优秀中文网页设计
  • 如何在腾讯云做网站开源站群cms
  • 公司网站建设的意义网易做网站
  • 网络营销案例分析与实践搜外seo
  • 手机建网站挣钱吗wordpress面包屑
  • 淘客做网站怎么备案网站开发工具的是什么
  • 提供大良网站建设郑州网站建设网站开发
  • 邢台做wap网站价格wordpress评论滑动
  • 绝味鸭脖网站建设规划书江苏建设人才网 官网
  • 网站源码授权破解centos wordpress 整站
  • 建设一个私人视频网站wordpress js
  • 手机企业网站制作流程3d建模自学