文章目录

  • 题目简介
  • 目标定义
  • .流程图
  • 4.实现/5.分析
  • 全部代码

python爬虫课程设计
背单词吧

题目简介

大学四年中,必不可少的证就是英语四六级证书,我们的项目可以通过pycharm来对我们所掌握的词汇量进行一个小测试,能够将掌握得不是很好的单词,保存到一个文档里面,以便我们能够及时的复习,并对掌握得还不错的单词进一步巩固,争取早日拿到英语四六级证书。

目标定义

目标:在扇贝单词的基础上新增错词本和可视化正确率。
主要解决的问题:单词是否正确的检验,需要检查推测出每个单词的编号变量是什么;最后发现是rank唯一确定。

.流程图

4.实现/5.分析

第一步:get请求爬取到相应的词库

import requests
url = 'https://www.shanbay.com/api/v1/vocabtest/category/?'
word_type_json = requests.get(url).json()    #json()解析下载内容
word_type = word_type_json['data'] #获取词库种类(解析为字典,data对应的值为各种词汇)
n = 0 #用于计数
for type in word_type:print(str(n) + '. ' + type[1])n += 1
choose_type = int(input('请输入出题范围的编号:'))
ciku = word_type[choose_type][0]     #选择得到对应的词库
#利用字符串+运算后是将两个字符串连接构造词库的URL
test = requests.get('https://www.shanbay.com/api/v1/vocabtest/vocabularies/?category=' + ciku)
words = test.json()['data'] #获取所有单词信息
#用于存单词的list
danci = [] #认识的单词
words_knows = [] #认识的单词
not_knows = [] #不认识的单词
num = int(input('\n输入你想测试的单词数'))
print ('\n测试开始。如果你认识这个单词,请输入1后按Enter,否则直接按Enter:')

第四行的word_type_json[‘data’]因为词库种类在返回的字典的data键对应的值里面然后分别为各种词库标号并显示出来,给用户选择,效果如图:

在扇贝官网中:


第二步:仿照扇贝单词,用户选择认识的单词

#用户选择认识 or 不认识
n=1   #用于计数
for x in words:print('第' + str(n) + '个:' + x['content']) #获取单个单词answer = input('认识请输入1,否则直接敲Enter:')if answer == '1':danci.append(x['content']) #把选择的单词加入,只加入单词words_knows.append(x) #这里是把整个单词的信息加入,即整个字典加入,因为后面要用到else:not_knows.append(x) #不认识的放这里if n == num:breakn += 1


可以看到这里扇贝官网上一次生成的单词太多了,
先爬取下来,用户输入num来表示想测试几个单词,代码用n=1来计数,每测完一个就++

if n == num:break
n += 1

第三步:检测单词
先观察官网,找到对应的正确翻译

这样就可以做出单词检测了
代码第48行

print(str(i+1) + y['definition_choices'][i]['definition'])

显示选择号码,还有中文
代码第50行

if y['definition_choices'][choice-1]['rank'] == y['rank']: #选择正确
通过每个单词特有的rank对应的值来判断用户是否选择正确

第四步:生成错词本和陌生单词本
这里是陌生单词本,错词本差不多

for x in not_knows:n += 1right_ans = x['rank']for i in range(4):if x['definition_choices'][i]['rank'] == right_ans:mean = x['definition_choices'][i]['definition']breakword = x['content'] + '  ' + meanprint(str(n) + '.' + word)f.write(word + '\n')
f.close()

第五步:查看错词本
因为open创建的文件在当前目录下,所以这里把当前路径打印一下

import os
print("您的错题本的生成路径:")
print(os.getcwd())

全部代码

import requests, sys
print('')
url = '[图片]https://www.shanbay.com/api/v1/vocabtest/category/?'
word_type_json = requests.get(url).json()    #json()解析下载内容
word_type = word_type_json['data'] #获取词库种类(解析为字典,data对应的值为各种词汇)
n = 0 #用于计数
for type in word_type:print(str(n) + '. ' + type[1])n += 1
choose_type = int(input('请输入出题范围的编号:'))
ciku = word_type[choose_type][0]     #选择得到对应的词库
#利用字符串+运算后是将两个字符串连接构造词库的URL
test = requests.get('[图片]https://www.shanbay.com/api/v1/vocabtest/vocabularies/?category=' + ciku)
words = test.json()['data'] #获取所有单词信息
#用于存单词的list
danci = [] #认识的单词
words_knows = [] #认识的单词
not_knows = [] #不认识的单词
num = int(input('\n输入你想测试的单词数'))
print ('\n测试开始。如果你认识这个单词,请输入1后按Enter,否则直接按Enter:')
#用户选择认识 or 不认识
n=1 #用于计数
for x in words:print('第' + str(n) + '个:' + x['content']) #获取单个单词answer = input('认识请输入1,否则直接敲Enter:')if answer == '1':danci.append(x['content']) #把选择的单词加入,只加入单词words_knows.append(x) #这里是把整个单词的信息加入,即整个字典加入,因为后面要用到else:not_knows.append(x) #不认识的放这里if n == num:breakn += 1#单词检测
if len(danci) != 0:print('\n在上述' + str(num) +'个单词中,有' + str(len(danci)) + '个是你觉得自己认识的,它们是:')for word in danci:print(word, end=' ')#以选择题形式来检测print ('\n\n现在来检测一下,你有没有真正掌握它们:\n')wrong_words = [] #错词本(也是单词所有信息加入,因为保存本地会用到)right_num = 0 #记录选择正确的个数n = 1 #用于计数for y in words_knows:print('第' + str(n) + '个:')for i in range(4): #遍历四个选项print(str(i+1) + y['definition_choices'][i]['definition'])choice = int(input('请选择单词\" ' + y['content'] + ' \"的正确翻译:'))if y['definition_choices'][choice-1]['rank'] == y['rank']: #选择正确right_num += 1else:wrong_words.append(y) #否则整个单词的信息加入错词listn += 1print('\n')print ('你的成绩:')print ('共' + str(num) + ' 个词汇,你认识其中 ' + str(len(danci)) + ' 个,')print('实际掌握 ' + str(right_num) + ' 个,错误 ' + str(len(wrong_words)) + ' 个。')#错误单词本if len(wrong_words) != 0:save = input ('\n\n你是否想打印错词集并保存在本地?(输入 Y 或 N:)')if save == 'Y':f = open('错误单词本.txt', 'a+')print ('你记错的单词有:')n = 1mean = ''for z in wrong_words:right_ans = z['rank'] #正确词意号for i in range(4):if z['definition_choices'][i]['rank'] == right_ans: #找到正确词意mean = z['definition_choices'][i]['definition']breakword = z['content'] + '  ' + mean #把单词和正确词意连起来print (str(n) + '.' + word)f.write(word + '\n')n += 1f.close()print('\n不熟单词已保存至当前文件目录下')else:print('继续加油')
else:print('\n居然TMD一个也不认得?')#陌生单词本
if len(not_knows) != 0:save = input ('\n是否打印不认识的单词并保存在本地?(输入Y或N:)')if save == 'Y':f = open('陌生单词本.txt', 'a+')print ('以下是你不认识的单词:')n=0mean = ''for x in not_knows:n += 1right_ans = x['rank']for i in range(4):if x['definition_choices'][i]['rank'] == right_ans:mean = x['definition_choices'][i]['definition']breakword = x['content'] + '  ' + meanprint(str(n) + '.' + word)f.write(word + '\n')f.close()print ('\n记住的词已保存至当前文件目录下,欢迎下次使用')else:print('\n欢迎下次使用')
else:    #全对的情况print('\n你真棒!')
#查看错题本路径
import os
print("您的错题本的生成路径:")
print(os.getcwd())
import warnings
warnings.filterwarnings('ignore')
#数据可视化
import matplotlib.pyplot as plt
z = [str(right_num), str(len(wrong_words))]
plt.rcParams['font.sans-serif'] = 'SimHei'    #为了中文正常显示
plt.title('正确率')
plt.pie(z, autopct='%.2f%%', labels=['正确', '错误'])
plt.show()

关于python爬虫课程设计相关推荐

  1. python爬虫课程设计摘要_爬虫课程设计(爬虫代码)

    import bs4 from selenium import webdriver import time import pymysql import csv def getWebDriver(url ...

  2. python爬虫课程设计过程_[Python]新手写爬虫全过程(已完成)

    今天早上起来,第一件事情就是理一理今天该做的事情,瞬间get到任务,写一个只用python字符串内建函数的爬虫,定义为v1.0,开发中的版本号定义为v0.x.数据存放?这个是一个练手的玩具,就写在tx ...

  3. python商业爬虫教程_廖雪峰老师的Python商业爬虫课程 Python网络爬虫实战教程 体会不一样的Python爬虫课程...

    廖雪峰老师的Python商业爬虫课程 Python网络爬虫实战教程 体会不一样的Python爬虫课程 1.JPG (53.51 KB, 下载次数: 1) 2019-8-9 08:15 上传 2.JPG ...

  4. Python数据处理课程设计-房屋价格预测

    注:可能有些图片未能成功上传,可在文档处进行下载 链接:Python数据处理课程设计-房屋价格预测-机器学习文档类资源-CSDN下载 课程设计报告 课程名称 Python数据处理课程设计 项目名称 房 ...

  5. python爬虫课程笔记

    11 Oct 2020 国庆长假公司上了一个新项目,一直没有休息,10月9号开了爬虫班,事情真是一大堆.开班典礼和第一节课还是挺简单的,代码都没敲.第一节课主要讲了端口的概念,通讯协议,数据拆包,数据 ...

  6. python网络爬虫课程设计题目_山东建筑大学计算机网络课程设计《基于Python的网络爬虫设计》...

    山东建筑大学计算机网络课程设计<基于Python的网络爬虫设计> 山东建筑大学 课 程 设 计 成 果 报 告 题 目: 基于Python的网络爬虫设计 课 程: 计算机网络A 院 (部) ...

  7. python 计算机网络课程设计(网络主机扫描程序)

    我们的运行环境是pycharm 目录 背景 随着网络技术的发展,越来越多的计算机接入互联网上,网络安全逐渐成 为一个潜在的巨大问题,如何保障自身的网络安全,其中一个主要的方法就是 自查自纠,而在这个过 ...

  8. Python语言课程设计名片管理系统

    目标:搭建名片管理系统 框架结构 通过本项目的学习,学员可以了解项目开发的流程,掌握项目需求分析.设计与功能的代码实现.提高同学们独立分析需求与功能实现的能力. 项目知识点:变量.流程控制.函数.模块 ...

  9. python人工智能课程设计_中小学课程设计:以计算思维培养为核心的人工智能课程设计与实践...

    面对国际日趋紧张的科技竞争,发展新一代人工智能已成为各国的重要国家战略.人工智能人才的梯队建设是我国发展人工智能技术和推动产业应用的重要基础. 01存在问题 近年来教育部和各省市教育主管部门发布了一系 ...

最新文章

  1. Python Numpy多维数组.sum(axis=0/1/2...) 详解
  2. 机器学习入门:一文让你快速了解机器学习
  3. C语言访问MYSQL数据库的完整的代码例子
  4. sprint周期总结
  5. docker下MySQL修改配置并重启生效:表名不区分大小写
  6. 查询附近的人——GEO
  7. Mysql CMAKE编译参数详解
  8. Spring的AOP特性
  9. [软件] 装机员 Ghost Win7 Sp1 32位纯净10月版
  10. iOS clang: error: linker command failed with exit code 1 (use -v to see invocation)
  11. Chrome控制台console的各种用法(方便调试)
  12. [SHOI2008]堵塞的交通
  13. Oblog4.5跨站漏洞
  14. #10094. 「一本通 3.5 练习 2」消息的传递
  15. 越狱Season 1-Episode 9: Tweener
  16. 面试题整理 自问自答
  17. 使用pymysql报错:pymysql.err.InternalError: Packet sequence number wrong - got 5 expected 1
  18. Task04: 文字图例尽眉目(12月datawhale组队)
  19. 多项式回归、学习曲线
  20. JointJS绘制点和线段

热门文章

  1. 大地水准面、大地基准面
  2. 深度强化学习的芯片布局
  3. Google-S2 空间索引框架简介及部分API使用示例
  4. LiveVideoStackCon分享会专题摘抄
  5. 带滤镜拍照的app_23款最热门的摄影APP推荐,这应该是最全的合集了。
  6. 两弧相等能得到什么_如果两条弦相等,那么( )A.这两条弦所对的弧相等B.这两条弦所对...
  7. 原来SqlSession只是个甩手掌柜
  8. 【spark 大数据处理技术】 - “Hello world”
  9. od机考真题-数格子,跳格子游戏
  10. 《动手学ROS2》4.3ROS2话题通信(C++)