连夜优化的一段代码,请求指教
【摘要】
文章目录
前言重构后的代码
前言
首先感谢大家点击进来。 最近两个月一直在和时间赛跑,上周六刚考完四六级,明天又要考运筹学。听说要做大数据相关专业的人运筹学是不能挂的。
很紧张。 但是前天晚上依旧是连夜完善并重构了一段项目代码,从三百多行压缩到了一百行以内。
然后,太忙了,也没时间写博客,就把代码贴一下当一篇吧,小白看个热闹,大佬要是有兴趣,...
前言
首先感谢大家点击进来。
最近两个月一直在和时间赛跑,上周六刚考完四六级,明天又要考运筹学。听说要做大数据相关专业的人运筹学是不能挂的。
很紧张。
但是前天晚上依旧是连夜完善并重构了一段项目代码,从三百多行压缩到了一百行以内。
然后,太忙了,也没时间写博客,就把代码贴一下当一篇吧,小白看个热闹,大佬要是有兴趣,愿意帮小弟看看,我不胜荣幸。
重构后的代码
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)