连夜优化的一段代码,请求指教

举报
看,未来 发表于 2020/12/30 00:24:59 2020/12/30
【摘要】 文章目录 前言重构后的代码 前言 首先感谢大家点击进来。 最近两个月一直在和时间赛跑,上周六刚考完四六级,明天又要考运筹学。听说要做大数据相关专业的人运筹学是不能挂的。 很紧张。 但是前天晚上依旧是连夜完善并重构了一段项目代码,从三百多行压缩到了一百行以内。 然后,太忙了,也没时间写博客,就把代码贴一下当一篇吧,小白看个热闹,大佬要是有兴趣,...

在这里插入图片描述

文章目录

前言

首先感谢大家点击进来。
最近两个月一直在和时间赛跑,上周六刚考完四六级,明天又要考运筹学。听说要做大数据相关专业的人运筹学是不能挂的。

很紧张。
但是前天晚上依旧是连夜完善并重构了一段项目代码,从三百多行压缩到了一百行以内。

然后,太忙了,也没时间写博客,就把代码贴一下当一篇吧,小白看个热闹,大佬要是有兴趣,愿意帮小弟看看,我不胜荣幸。

重构后的代码

from selenium import webdriver #操作浏览器所需的包
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC  #Xpath导航所需的包
import time #延时所需的包

import openpyxl

# 获取Excel数据,Excel按行排列,不为什么,我愿意
def get_excel_data(excel_name,column_name): wb = openpyxl.open(excel_name) ws = wb.active # 所有表的网址 最好放在Excel里面 data_list = [i.value for i in ws[column_name]] return data_list

class JSJ(): # 所有Xpath的地址 # 登录所用 __Xpath_addr1 = [ '//*[@id="auth_key"]', '//*[@id="login_form"]/div/div[3]/button', '//*[@id="password"]', '//*[@id="login_form"]/div/div[4]/button', ] __Xpath_addr2 = [ '//*[@id="tb_entries_grid_toolbar_item_export_excel"]/table/tbody/tr/td/button', '//*[@id="export_job_modal"]/div/div/div[3]/div/a[1]', '//*[@id="tb_entries_grid_toolbar_item_export_excel"]/table/tbody/tr/td/div[1]/span[2]/a[1]', '//*[@id="form_nav"]/a[1]', '/html/body/div[3]/div[2]/div[5]/a[2]', '//*[@id="clear_data_confirm_modal"]/div/div/div[2]/div/input', '//*[@id="clear_data_confirm_modal"]/div/div/div[3]/button[1]', ] # 以下为可复用代码 def __init__(self): self.__driver = webdriver.Chrome()  # 获取谷歌浏览器控制句柄 #self.__wait = None # 访问网址并获取Xpath导航 def __get_url_Xpath(self,url): self.__driver.get(url) self.__wait = WebDriverWait(self.__driver, 10) time.sleep(2) #点击控件 def __click_button(self,Xpath,sleep_time): bt = self.__wait.until(EC.presence_of_element_located((By.XPATH, Xpath))) bt.click() time.sleep(sleep_time) # 输入文本 def __input_text(self,Xpath,sleep_time,msg): it = self.__wait.until(EC.presence_of_element_located((By.XPATH, Xpath))) it.clear() it.send_keys(msg) time.sleep(sleep_time) # 自动操作控件 def __control_Xpath(self,Xpath_addr,sleep_time_list,text_text): for i,j,k in zip(Xpath_addr,sleep_time_list,text_text): # 如果没有文本,那就是点击 if k == '': self.__click_button(i,j) else: self.__input_text(i,j,k) # 登录、输入账号、点击“下一步”、输入密码、点击登录 def login(self,name,pwd): #访问登录网址 self.__get_url_Xpath('https://jinshuju.net/login') self.__control_Xpath(self.__Xpath_addr1,[2,2,2,2],[name,'',pwd,'']) # 循环访问投票链接、获取下载地址、确定数据导出、下载数据、回到投票概述、删除数据、填入问卷名、确定删除 def ask_vote_url(self,list_vote_url): vote_Name = get_excel_data('class_name.xlsx','A') while list_vote_url != []:  # 当列表不为空 for url,table_name in zip(list_vote_url[:], vote_Name): # 从列表中取出网址 try: self.__get_url_Xpath(url)  # 打开金数据登录页面 except: continue list_vote_url.pop(0) # 将网址从列表中移除 vote_Name.pop(0) self.__control_Xpath(self.__Xpath_addr2,[2,20,20,2,4,2,20],['','','','','',table_name,'']) time.sleep(2) self.__driver.close()

jsj = JSJ()
jsj.login(账号,密码)
vote_urls = get_excel_data('vote_url.xlsx','A')
jsj.ask_vote_url(vote_urls)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95

感觉还是有很多的“坏味道”,恳请大佬们不吝赐教,打在评论区,我明天考完试来改。

在这里插入图片描述

文章来源: lion-wu.blog.csdn.net,作者:看,未来,版权归原作者所有,如需转载,请联系作者。

原文链接:lion-wu.blog.csdn.net/article/details/111311004

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。