
文章目錄
- 前言
- 重構后的代碼
前言
首先感謝大家點擊進來,
最近兩個月一直在和時間賽跑,上周六剛考完四六級,明天又要考運籌學,聽說要做大資料相關專業的人運籌學是不能掛的,
很緊張,
但是前天晚上依舊是連夜完善并重構了一段專案代碼,從三百多行壓縮到了一百行以內,
然后,太忙了,也沒時間寫博客,就把代碼貼一下當一篇吧,小白看個熱鬧,大佬要是有興趣,愿意幫小弟看看,我不勝榮幸,
重構后的代碼
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)
感徑訓是有很多的“壞味道”,懇請大佬們不吝賜教,打在評論區,我明天考完試來改,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/236602.html
標籤:python
