import json
from time import sleep
from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By
# 2024022211 刘建强
class JiXinDa:
def __init__(self):
self.web=webdriver.Edge()
self.web.maximize_window()
self.url="https://jxd.itheima.net/#/login"
def login_to_find(self):
self.web.get(self.url)
# 点击登录
self.web.find_element(By.XPATH, '//*[@id="app"]/div/div/div[2]/div/button').click()
# 点击短信服务
self.web.find_element(By.XPATH, '//*[@id="app"]/div/div[1]/ul/li[2]/div/div').click()
# 点击服务日志
self.web.find_element(By.XPATH, '//*[@id="app"]/div/div[1]/ul/li[2]/ul/li/ul/li[5]').click()
# 获取当前浏览器所有窗口句柄,该页面会切换页面句柄
handles = self.web.window_handles
# 切换新句柄,不然会导致element not interactable错误
self.web.switch_to.window(handles[-1])
# 点击重置
self.web.find_element(By.XPATH,
"//*[@id='app']/div/div[2]/div[1]/div/div/div/div/div[3]/div[1]/form/div/div[5]/div/div/div/button[2]").click()
# 输入关键词
search_input = self.web.find_element(By.XPATH,
"//*[@id='app']/div/div[2]/div[1]/div/div/div/div/div[3]/div[1]/form/div/div[1]/div/div/div/input")
search_input.send_keys("闲云旅游")
# 点击搜索
self.web.find_element(By.XPATH,
"//*[@id='app']/div/div[2]/div[1]/div/div/div/div/div[3]/div[1]/form/div/div[5]/div/div/div/button[1]").click()
def get_data(self):
tables = []
# 遍历数据
trs = self.web.find_elements(By.XPATH,
"//*[@id='app']/div/div[2]/div[1]/div/div/div/div/div[3]/div[2]/div[1]/div[3]/table/tbody/tr")
for i in trs:
ths = i.find_elements(By.TAG_NAME, "td")
tr_data = []
for j in ths:
text = j.text
tr_data.append(text)
table_data = {
"序号": tr_data[0],
"创建时间": tr_data[1],
"通道名称": tr_data[2],
"签名名称": tr_data[3],
"模板名称": tr_data[4],
"应用": tr_data[5],
"耗时(秒)": tr_data[6],
"状态": tr_data[7]
}
tables.append(table_data)
sleep(5)
# 下滑页面
body = self.web.find_element('tag name', 'body')
body.send_keys(Keys.PAGE_DOWN)
sleep(2)
page = self.web.find_element(By.XPATH, "//ul[@class='el-pager']/li[2]")
page.click()
sleep(3)
# 遍历数据
trs = self.web.find_elements(By.XPATH,
"//*[@id='app']/div/div[2]/div[1]/div/div/div/div/div[3]/div[2]/div[1]/div[3]/table/tbody/tr")
for i in trs:
ths = i.find_elements(By.TAG_NAME, "td")
tr_data = []
for j in ths:
text = j.text
tr_data.append(text)
table_data = {
"序号": tr_data[0],
"创建时间": tr_data[1],
"通道名称": tr_data[2],
"签名名称": tr_data[3],
"模板名称": tr_data[4],
"应用": tr_data[5],
"耗时(秒)": tr_data[6],
"状态": tr_data[7]
}
tables.append(table_data)
return tables
def save_data(self,tables):
# 输出JSON数据
with open("jixinda.json", "w", encoding="utf-8") as f:
json.dump(tables, f, ensure_ascii=False)
print("保存成功")
sleep(10)
self.web.quit()
JiXinDa = JiXinDa()
JiXinDa.login_to_find()
JiXinDa.save_data(JiXinDa.get_data())
03-08
1073

11-26
2396

06-21
1730

09-19
1764

12-30