首页 新闻 会员 周边 捐助

请问如何简化以下代码

0
[待解决问题]

for Type in Numbers:
for Name in Numbers[Type]:
Url = f"https://hkjunkcall.com/?ft={Numbers[Type][Name]}"
Page.get(Url)
Page.wait.url_change(Url, timeout=300)
Msg = Page.ele(
"xpath=//html/body/div/div[3]/div[2]/div[4]/div[2]/table[3]/tbody/tr[2]/td/font/b"
)
App = Page.ele(
"xpath=//html/body/div/div[3]/div[2]/div[4]/div[2]/table[3]/tbody/tr[1]/td[2]/font/b"
)
if Msg:
print(
f"类型: {Type}, 名称: {Name}, 外显:{Numbers[Type][Name]},! {App.text} ! 标记 ! {Msg.text} !"
)
else:
Msg = Page.ele(
"xpath=//html/body/div/div[3]/div[2]/div[4]/div[2]/table[4]/tbody/tr[2]/td/font/b"
)
App = Page.ele(
"xpath=//html/body/div/div[3]/div[2]/div[4]/div[2]/table[4]/tbody/tr[1]/td[2]/font/b"
)
if Msg:
print(
f"类型: {Type}, 名称: {Name}, 外显:{Numbers[Type][Name]},! {App.text} ! 标记 ! {Msg.text} !"
)
else:
Msg = Page.ele(
"xpath=//html/body/div/div[3]/div[2]/div[4]/div[2]/table[5]/tbody/tr[2]/td/font/b"
)
App = Page.ele(
"xpath=//html/body/div/div[3]/div[2]/div[4]/div[2]/table[5]/tbody/tr[1]/td[2]/font/b"
)
if Msg:
print(
f"类型: {Type}, 名称: {Name}, 外显:{Numbers[Type][Name]},! {App.text} ! 标记 ! {Msg.text} !"
)
else:
print(
f"类型: {Type}, 名称: {Name}, 外显:{Numbers[Type][Name]},< 无标记 >"
)
Page.wait(1)

恶魔爸爸的主页 恶魔爸爸 | 菜鸟二级 | 园豆:202
提问于:2025-01-10 13:02

建议改进一下排版,博问支持 markdown 语法

dudu 1天前
< >
分享
所有回答(1)
0

要简化这段代码,可以通过消除重复代码、使用函数来处理重复逻辑,以及将相似的功能整合到一个循环中。以下是简化后的代码示例:

def fetch_data_and_print(Type, Name, number):
    # 封装获取数据和打印的逻辑
    for table_index in range(3, 6):  # 表格索引从3到5
        Url = f"https://hkjunkcall.com/?ft={number}"
        Page.get(Url)
        Page.wait.url_change(Url, timeout=300)

        # 根据表格索引构建XPath
        msg_xpath = f"//html/body/div/div[3]/div[2]/div[4]/div[2]/table[{table_index}]/tbody/tr[2]/td/font/b"
        app_xpath = f"//html/body/div/div[3]/div[2]/div[4]/div[2]/table[{table_index}]/tbody/tr[1]/td[2]/font/b"

        Msg = Page.ele(msg_xpath)
        App = Page.ele(app_xpath)

        if Msg:
            print(f"类型: {Type}, 名称: {Name}, 外显:{number},! {App.text} ! 标记 ! {Msg.text} !")
            return  # 找到标记后返回
    # 如果没有任何标记
    print(f"类型: {Type}, 名称: {Name}, 外显:{number},< 无标记 >")
    Page.wait(1)

# 主循环
for Type in Numbers:
    for Name in Numbers[Type]:
        fetch_data_and_print(Type, Name, Numbers[Type][Name])

主要改动:

  1. 函数封装:创建了一个fetch_data_and_print函数来封装获取数据和打印的逻辑,避免重复代码。
  2. 循环处理表格索引:使用循环遍历表格索引(3到5),简化了代码。
  3. 条件逻辑简化:只需检查一次Msg,找到标记后立即返回,避免了多次重复的条件检查。

这样的改动不仅使代码更简洁,还提高了可读性和可维护性。如果你有其他特定需求或想要进一步的调整,请告诉我!

Technologyforgood | 园豆:7793 (大侠五级) | 2025-01-10 15:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册