前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python_爬虫百度英文学习词典

Python_爬虫百度英文学习词典

作者头像
咕咕星
发布2020-10-29 14:15:38
6860
发布2020-10-29 14:15:38
举报
文章被收录于专栏:咕咕星咕咕星
主方法main

定义主函数main,程序的入口,首先导入io包,用os.path.exists判断字典文件是否存在,如果不存在则新建一个,然后进入循环中,让用户输入相应的数字,执行相应的功能。

代码语言:javascript
复制
def main():
    flag = os.path.exists('dictionary.csv')
    if flag == False:
        d = open('dictionary.csv', 'w')
        d.close()
    while 'true':
        print('---英语学习词典(1添加2查询3退出)---')
        num = input('请输入相应功能的编号:')
        if num == '1':
            inputWord()
        elif num == '2':
            serachWord()
        elif num == '3':
            break
        else:
            print('输入有误,请重新输入')
inputWord方法

inputWord这是一个添加英语和对应中文意思的方法,打开这个文件,先把光标移动到开头,通过一行一行扫描,然后把行内的英语单词通过分片的形式分割出来,判断用户输入的英文单词字典中是否存在,如果存在则提示,并输入对应的翻译,如果不存在则再进行添加进字典里面

代码语言:javascript
复制
def inputWord():
    with open('dictionary.csv', 'a+', encoding='utf-8', newline='') as csv_file:
        csv_file.seek(0)
        e = input('请输入你要录入的英语单词:')
        files = csv_file.readlines()
        for file in files:
            file = file.replace('\n', '')
            ls = file.split('-')
            if ls[0] == e:
                print('该单词已添加过了,中文意思是:' + ls[1])
                return
        # 字典找不到单词,开始添加
        csv_file.seek(2)
        c = input('请输入对应的中文意思:')
        line = '\n' + e + '-' + c
        csv_file.writelines(line)
        print(e + '已添加成功')
serachWord方法

serachWord这是查找功能,用户输入英文单词,查询中文意思,打开字典文件,每行扫描,提取前面的英文单词,遍历与用户输入的单词匹配,如果不存在则提示,没有找到这个单词,然后给用户提供是否需要通过百度翻译,查看意思,并且翻译结束后可以添加进字典中

代码语言:javascript
复制
def serachWord():
    word = input('请输入你要查询的英语单词')
    with open('dictionary.csv', 'r+', encoding='utf-8') as csv_file:
        files = csv_file.readlines()
        # print(files)
        # print(type(files))
        for file in files:
            file = file.replace('\n', '')
            ls = file.split('-')
            # print(ls)
            if ls[0] == word:
                print('中文意思是:' + ls[1])
                return
        print('字典库中未找到这个单词')
        flag = input('是否要通过百度翻译查看翻译:(输入Y/y查询)')
        if (flag == 'Y') | (flag == 'y'):
            chn = baudu(word)
            print('百度翻译:' + chn)
            if chn != '出错了':
                flag2 = input('是否要添加进词典:(输入Y/y添加)')
                if (flag2 == 'Y') | (flag2 == 'y'):
                    line = '\n' + word + '-' + chn
                    csv_file.writelines(line)
                    print(word + '已添加成功')
baidu方法

baidu这个方法,是通过百度翻译官网爬虫实现,用到requests库

代码语言:javascript
复制
def baudu(word):
    url = 'https://fanyi.baidu.com/sug'
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36'
    }
    data = {'kw': word}
    try:
        r = requests.post(url, data=data, headers=headers, timeout=5)
        r.raise_for_status()
        data = r.json()['data']
        for i in data:
            if i['k'] == word:
                return i['v']
            else:
                return '出错了'
    except:
        return '出错了'
实验结果:
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 主方法main
  • inputWord方法
  • serachWord方法
  • baidu方法
  • 实验结果:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档