作为一个程序员,会经常查阅一些技术文档和技术网站,很多都是英文的,遇到不认识的词就要查,词典的使用频率也颇高,既然是程序员,高逼格的方式当然是做一个词典,此为动机。

运行平台: Windows

Python版本: Python3.6

IDE: PyCharm

其他工具:Chrome浏览器

1.寻找词典来源

​ 我寻找一个好的词典的标准是:解释到位、数据抓取方便。

​ 几个候选词典有:百度翻译、金山词霸、有道翻译、谷歌翻译。

​ 最终选定金山词霸作为词源,原因:

大学时就使用金山词霸;

url比较简单。

2.数据抓取

2.1 寻找URL

​ 打开金山词霸在线翻译首页http://www.iciba.com/ ,输入一个单词进行查询,此处以“call”为例,查询页面出来以后看URL,浏览器的地址栏内容为http://www.iciba.com/call 。猜想查询URL格式为http://www.iciba.com/ 后面跟上要查询的单词(或词语),将call改为其他单词果然跳出相应的查询页面,中文也一样,由此可以证明以上猜想,也可以看出查询的URL真的简单明了。

2.2 寻找数据

​ 我只是想弄懂单词的意思,所以我需要的数据是如图所示部分:

需要的数据

​ 在浏览器按F12键调出开发者工具,然后刷新页面,我们要在页面中寻找我们需要的数据,按图示操作:

2.查找区域

​ 确定好了数据区域是< ul class="base-list switch_part">和 < /ul>中间的部分,接下来就把这些数据都抓取下来吧。

2.3 抓取数据

​ 抓取数据用到了urllib.request库,解析html用到了BeautifulSoup库。所以首先导入这两个库。

import urllib.request

from bs4 import BeautifulSoup

​ 需要将整个网页内容抓取下来,用如下代码实现:

root_url = 'http://www.iciba.com/'

word = input('请输入想要查询的单词(或"q"退出):\n')

url = root_url + word # 拼接URL

response = urllib.request.urlopen(url)

html = response.read()

​ 有了html内容,接下来要把 base-list switch_part 标签里的内容读取出来,BeautifulSoup里的find可以实现此功能:

soup = BeautifulSoup(html, 'lxml')

tag_soup = soup.find(class_='base-list switch_part')

print(tag_soup)

​ 获得输出结果为:

v.

呼唤,喊叫;

召唤,叫来,召集;

下令,命令;

打电话给

,

n.

喊叫,大声喊;

电话联络;

必要,理由;

要求

​ 可以看出里面包含了两个< li class="clearfix">< /li>,这表明call这个单词有两个词性,接下来就要解析出所有的词性,用到BeautifulSoup的find_all函数:

meanings = tag_soup.find_all(class_='clearfix')

for i in range(len(meanings)):

translation = meanings[i].get_text() # 获取文本内容

print(translation.strip()) # 去掉字符串开头和结尾的空行

print('='*30) # 华丽的分割线

​ 最后输出结果如图所示,这已经是我想要的结果了。

3.查询结果

3. 改进优化

​ 该词典的的基本功能已经完成,但是存在几个缺陷。

3.1 查询中文

​ 查询英语单词已经没有问题了,那么查询中文试试:

4.查询中文失败

​ 程序报错,是编码问题,是urllib.request.urlopen函数导致的,我们只需将URL拼接改为url = root_url + urllib.parse.quote(word)即可,试一下:

5.查询中文成功

3.2 查询不存在的单词

​ 如果查询不存在的单词结果会如何:

6.查询不存在的单词失败

​ 失败是因为在tag_soup = soup.find(class_='base-list switch_part')这一行执行完之后,tag_soup的值为None,已经不是BeautifulSoup里的数据类型了,已经不能使用find_all 函数了。那么在此处做一个判断:

如果tag_soup为None,打印提醒语句并等待下一次输入

如果tag_soup不为None,那么继续执行下面的解析。

python制作英语小词典_Python 爬虫:自制简易词典相关推荐

  1. python制作英语小词典_Python爬虫之自制英汉字典

    最近在微信公众号中看到有人用Python做了一个爬虫,可以将输入的英语单词翻译成中文,或者把中文词语翻译成英语单词.笔者看到了,觉得还蛮有意思的,因此,决定自己也写一个玩玩~~ 首先我们的爬虫要能将英 ...

  2. python制作英语小词典_如何用python(django)创建英语词典应用程序?

    我不知道你在说什么功能.如果您的意思是"从数据库中记录的词汇中搜索关键字",那么python dictionnary不是一个可能的解决方案,因为您必须反序列化整个数据库才能进行搜索 ...

  3. python 制作自己的新闻_Python爬虫-带你自制新闻网站,先学先会一起来学吧

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于搜狗网 作者:AI科技大本营 ( 想要学习Python?Python ...

  4. python在线翻译小程序_Python爬虫学习之翻译小程序

    本次博客分享的内容为基于有道在线翻译实现一个实时翻译小程序,本次任务是参考小甲鱼的书<零基础入门学习Python>完成的,书中代码对于当前的有道词典并不适用,使用后无法实现翻译功能,在网上 ...

  5. python制作mac小软件_python生成mac os app记录-py2app

    ok 软件界面设计完了  需要给软件打包成独立能运行的app.我是用了py2app. 刚开始使用pyinstaller 打包app.打包完了点击一闪就没了,花了好几天,一直没有解决.最后另起新路,选择 ...

  6. python制作微信小程序_python搭建微信小程序

    微信官方发布小程序自动化测试框架Minium.该框架支持使用Python或者Javascript编写自动化测试程序,可以运行在IDE.Android以及iOS三端. 由于是微信官方发布,该框架注定秒杀 ...

  7. python爬取有道词典_python 爬虫+有道词典实现一个简单翻译程序

    #coding=utf-8 importurllibimporturllib2importjson'''功能说明: 根据输入要翻译的文字,进行有道自动翻译: 实现中文->英文.英语及其他语言-& ...

  8. python制作动态小游戏_Python——项目-小游戏2-动画绘制

    实现游戏循环还有事件的监听 在上一讲中 你需要完成这样的这样的效果, 如果你还没有完成,请不要继续往下阅读!!切记切记切记.,重要的事情说三遍 我们来看一下什么是游戏循环 所谓的游戏循环很好的理解 就 ...

  9. python制作翻译小软件_python 制作一个翻译软件

    from tkinter import * from tkinter import ttk import requests import json class Application(Tk): def ...

最新文章

  1. 在Ubuntu 14.04.5 64bit上安装git GUI客户端GitKraken
  2. iMeta期刊推特官方帐号@iMetaJournal上线
  3. Redis分布式锁 Spring Schedule实现任务调度
  4. Linux 中使用 KVM
  5. 面试官问我怎么设计100层大楼的电梯按键,我......
  6. maven项目修改java编译版本的方式
  7. 交叉编译HTOP并移植到ARM嵌入式Linux系统
  8. 网络游戏同步问题综述
  9. 12) 十分钟学会android--APP通信传递消息之简单数据传输
  10. Scala类型系统的目的——Martin Odersky访谈(三)
  11. 【Java数据结构与算法】第十二章 哈夫曼树和哈夫曼编码
  12. [转载]MySQL锁机制
  13. 图像处理1 高斯模糊
  14. PHP接口设置10分钟失效
  15. BZOJ2199[Usaco2011 Jan] 奶牛议会
  16. 2011年国内五款值得关注网店系统
  17. 【常用模块】电容触摸按键模块(原理讲解、STM32实例操作)
  18. 解决mysql登录出现10061的问题
  19. 干货 | 携程度假数据治理之数据标准管理实践
  20. 小铭的学习日记2022.8.1

热门文章

  1. 武汉音乐学院声乐专业考研上岸经验分享
  2. 选择python还是swift_iOS 开发选择OC还是Swift?
  3. 忙忙碌碌一整天,躺下总是老失眠,要想摆脱此状态,赶快听经解心宽,哈哈
  4. 计算组合数的几种方法总结
  5. 漱口水的性别真的重要吗
  6. 求区间[1,n]之间的回文数
  7. 相机数据恢复,60%的人都在用的黄金方案
  8. Android Car automotive解析
  9. 下一波下岗的将是 “IT技术支持人士”
  10. 漂泊者乐园资源分享_有声英语书_BlABook0038_The Night Crew