首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >寻找学生辅导

寻找学生辅导
EN

Code Review用户
提问于 2020-06-22 20:48:02
回答 2查看 79关注 0票数 2

我是一名数学导师,我找到了https://www.yksityisopetus.fi/网站,在那里你可以搜索学生。我制作了一个Python解析器,以找到希望至少25欧元/小时的数学教学的学生。这段代码有什么改进吗?

代码语言:javascript
复制
import requests
import tkinter as tk

link = "https://www.yksityisopetus.fi/opiskelijat/matematiikka/min-25-per-tunti/uusin-ensin"
f = requests.get(link)
lista = f.text.split('\n')
ilmot = []
for i in range(len(lista)):
    if "<a href=\"/" in lista[i] and "<a href=\"/opettajat" not in lista[i] and "<a href=\"/contact" not in lista[i]:
        if lista[i] not in ilmot:
            ilmot.append(lista[i])
parsittu = []
for i in range(len(ilmot)):
    ilmo = "https://www.yksityisopetus.fi"+ilmot[i].split('"')[1]
    f = requests.get(link)
    f = f.text.split(">")
    for j in range(len(f)):
        if f[j] == '\n<br /':
            parsittu.append(f[j+1])
s = ""
parsilmot = []
for i in range(len(parsittu)):
    if parsittu[i].endswith('</div'):
        parsilmot.append(parsittu[i][0:len(parsittu[i])-5])

p = list(set(parsilmot))
quote = ""
for i in p:
    quote += i+"\n"

root = tk.Tk()
S = tk.Scrollbar(root)
T = tk.Text(root, height=4, width=100)
S.pack(side=tk.RIGHT, fill=tk.Y)
T.pack(side=tk.LEFT, fill=tk.Y)
S.config(command=T.yview)
T.config(yscrollcommand=S.set)
T.insert(tk.END, quote)
tk.mainloop()
EN

回答 2

Code Review用户

回答已采纳

发布于 2020-06-22 22:52:31

将代码移动到函数

函数更容易测试,并且随着时间的推移更容易修改代码。

例如,我认为第一个块从服务器请求信息并创建链接列表。我认为第二个块处理链接列表并生成其他类型的列表。我认为第三个块迭代第二个块的列表并生成另一个列表。

如果这些块在函数中,那么主要逻辑将是不言自明的。例如,您的代码可能如下所示:

代码语言:javascript
复制
...
ilmot = get_students(link)
parsittu = some_other_function(ilmot)
parsilmot = another_function(parsittu)
quote = create_quote(parsilmot)
...

如果这些函数都有合理的名称,那么代码就很容易理解,并且可以很容易地隔离地测试每个函数。

不仅如此,您还可以更容易地将所有这些代码移动到一个函数中,这样您就可以在UI中实现一个“刷新”功能,这样您就不必每次想更新数据时都重新启动脚本。

票数 5
EN

Code Review用户

发布于 2020-06-23 15:00:41

英语

是好是坏,英语是编程的通用语言。。将面向用户的内容本地化到芬兰语是完全可以的,但代码不应该是(例如listaparsittu),原因有几个。Python本身在语法中使用英语单词,因此在其余代码中不使用英语单词是不一致的。

解析

手动这样做是非常危险的,因为您是:

代码语言:javascript
复制
if "<a href=\"/" in lista[i]

它很脆弱而且容易失败。使用BeautifulSoup代替。

检查请求调用

在此之后:

代码语言:javascript
复制
f = requests.get(link)

打电话

代码语言:javascript
复制
f.raise_for_status()

否则,失败将是不明显的。

票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/244347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档