20191322 2019-2020-2 《Python程序设计》实验四报告
课程:《Python程序设计》
班级: 1913
姓名: 吴泳淋
学号:20191322
实验教师:王志强
实验日期:2020年5月28日
必修/选修: 公选课
1.实验内容
在本次实验中,我做的是一个翻译器。效果如下:
2. 实验过程及结果
爬虫篇
首先打开百度翻译的网站 https://fanyi.baidu.com/
输入内容,按f12分析请求过程
找到preview,发现图中所示的请求为我们想要的结果
然后开始编写爬虫代码
写data的时候通过帮助文档发下需要使用parse进行转码
发现打印出来的内容偏乱,于是用json处理一下(JSON是一种轻量级的数据交换格式)
处理之后得到的数据是字典,我们就按照字典的索引写法找到我们要的数据就行
Tkinter篇
代码如下:
root = Tk()
root.title("吴秀秀翻译器")#命名
#root.geometry("500x150")
Label(root,text = '原文:').grid(row = 0)#创建一个标签
e1 = Entry(root)#创建输入栏
e1.grid(row = 0,column = 1,padx = 10,pady = 5)#输入栏的各种参数
Button(root,text = "翻译",width = 10,command = show).grid(row = 3,column = 0,sticky = W,padx = 10 ,pady = 5)#创建翻译按钮
Button(root,text= '退出',width = 10,command=root.quit()).grid(row = 3,column = 1,sticky = E,padx = 10,pady = 5)#创建退出按钮
mainloop() #完成
合并
发现Button组件有一个command选项,用于指定一个函数或方法,当用户点击按钮时,Tkinter就会自动地去调用这个函数或方法。于是想到将爬虫代码封装到一个函数里面,用Button组件去调用它。
完整代码 翻译器(爬虫+Tkinter)
3. 实验过程中遇到的问题和解决过程
-
问题1:一开始使用地是爬取有道翻译的网站,但是一直报错,报错截图如下:
-
问题1解决方案:通过百度发现,有道翻译有反爬虫机制,不同的翻译原文会对应不同的salt和sigh,为js加密,太过麻烦,于是多经比较后选择了百度翻译
-
问题2:改为百度翻译后代码还是报错,截图如下:
-
问题2解决方案:刚开始以为是因为图形界面太小,然后翻译的译文又太多超范围了,于是百度发现了geometry组件可以定义方框大小
但是还是报错,然后尝试直接打印爬虫的结果,依然报错,且报错原因一样。于是回头重审代码,发现封装爬虫代码的时候有几行代码因为缩进原因没有封装进去,修改之后问题解决
课程总结
刚开始上课的时候其实我是对王老师有些不满的,因为感觉王老师上课就是发几个视频给我们看,然后布置下任务给我们,根本没有给我们教些什么(也可能是因为还不想远离寒假)。但是慢慢地我发现我错了,王老师刚开始之所以会只给我们发视频,是因为刚开始的内容是最最基本的,看视频教学恰恰能打下夯实的基础。后面我发现王老师会为了备课,自己在网上查资料,敲一个下午的代码;会为了解决学生的问题,在网上到处查找资料;会因为有的内容没有上完而给自己加班给我们上完。我真的很感谢王老师。
在本学期的《Python程序设计》课上,我认为我最大的收获是学会了如何综合利用手上的资料。我自己有两本python方面的书,云班课上有老师发的教学视频,网络上有一大堆python学习资料。刚开始我是不知道怎么利用手上的资料的,往往是只看老师发的视频,把自己的书都扔在角落吃灰。可是后面的内容越来越深奥,老师发的视频也越来越不够用的时候,我发现百度是个好东西,渐渐地我发现百度上地资料都很杂,不是很全面的时候,我又发现书籍是个好东西。就这样经过一学期的课程,我学会了如何综合利用手上的资源。
我给这门课程的建议就是,希望老师能像后半学期这样,继续把当天的任务设定为当天完成。从我前半学期的经历来看,我经常会因为周末有python作业而耍不好,而且几天没碰python周末的时候又要重新去看视频,并且经常会忘了交作业。学习效率十分低下,往往一个下午就会被浪费掉,所以我希望王老师能继续将当天的任务设定为当天完成
参考资料
- 《零基础入门学习Python》