python爬虫之自制英汉字典


Posted in Python onJune 24, 2019

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

首先我们的爬虫要能将英语单词翻译成中文,因此,我们就需要一个网站帮助我们做这件事情。于是,我们选定有道词典,网址为: http://dict.youdao.com/ 。在该网页中我们输入单词nice,就会出来这个单词的意思,如下图:

python爬虫之自制英汉字典

针对上述过程,对于熟悉爬虫的读者来说,是不难完成将输入的单词的中文意思从网页中提取出来的。笔者的代码如下:

import requests
from bs4 import BeautifulSoup

# get word from Command line
word = input("Enter a word (enter 'q' to exit): ")

# main body
while word != 'q': # 'q' to exit
 try:
 # 利用GET获取输入单词的网页信息
 r = requests.get(url='http://dict.youdao.com/w/%s/#keyfrom=dict2.top'%word)
 # 利用BeautifulSoup将获取到的文本解析成HTML
 soup = BeautifulSoup(r.text, "lxml")
 # 获取字典的标签内容
 s = soup.find(class_='trans-container')('ul')[0]('li')
 # 输出字典的具体内容
 for item in s:
  if item.text:
  print(item.text)
 print('='*40+'\n')
 except Exception:
 print("Sorry, there is a error!\n")
 finally:
 word = input( "Enter a word (enter 'q' to exit): ")

运行上述Python代码,结果如下:

python爬虫之自制英汉字典

上述过程无疑是简单的,下面,我们增加一些新的功能,如下:

1.将Python代码打包成exe文件;
2.在CMD中输出单词的中文意思时,输出为彩色文字。

利用ctypes模块,我们可以对Windows系统进行简单操作,而利用pyinstaller模块,我们可以将自己的Python代码打包成exe文件。

改修的Python代码如下:

import requests
from bs4 import BeautifulSoup
import random
import ctypes

STD_INPUT_HANDLE = -10
STD_OUTPUT_HANDLE = -11
STD_ERROR_HANDLE = -12

FOREGROUND_DARKBLUE = 0x01 # 暗蓝色
FOREGROUND_DARKGREEN = 0x02 # 暗绿色
FOREGROUND_DARKSKYBLUE = 0x03 # 暗天蓝色
FOREGROUND_DARKRED = 0x04 # 暗红色
FOREGROUND_DARKPINK = 0x05 # 暗粉红色
FOREGROUND_DARKYELLOW = 0x06 # 暗黄色
FOREGROUND_DARKWHITE = 0x07 # 暗白色
FOREGROUND_DARKGRAY = 0x08 # 暗灰色
FOREGROUND_BLUE = 0x09 # 蓝色
FOREGROUND_GREEN = 0x0a # 绿色
FOREGROUND_SKYBLUE = 0x0b # 天蓝色
FOREGROUND_RED = 0x0c # 红色
FOREGROUND_PINK = 0x0d # 粉红色
FOREGROUND_YELLOW = 0x0e # 黄色
FOREGROUND_WHITE = 0x0f # 白色

std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)

# 设置文字颜色
def set_cmd_text_color(color, handle=std_out_handle):
 Bool = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color)
 return Bool

# 重置文字颜色为白色
def resetColor():
 set_cmd_text_color(FOREGROUND_DARKWHITE)

# 以指定颜色输出文字
def cprint(mess, color):
 color_dict = {'暗蓝色': FOREGROUND_DARKBLUE,
   '暗绿色': FOREGROUND_DARKGREEN,
   '暗天蓝色': FOREGROUND_DARKSKYBLUE,
   '暗红色': FOREGROUND_DARKRED,
   '暗粉红色': FOREGROUND_DARKPINK,
   '暗黄色': FOREGROUND_DARKYELLOW,
   '暗白色': FOREGROUND_DARKWHITE,
   '暗灰色': FOREGROUND_DARKGRAY,
   '蓝色': FOREGROUND_BLUE,
   '绿色': FOREGROUND_GREEN,
   '天蓝色': FOREGROUND_SKYBLUE,
   '红色': FOREGROUND_RED,
   '粉红色': FOREGROUND_PINK,
   '黄色': FOREGROUND_YELLOW,
   '白色': FOREGROUND_WHITE
   }
 set_cmd_text_color(color_dict[color])
 print(mess)
 resetColor()

# 颜色列表
color_list = ['暗蓝色','暗绿色','暗天蓝色','暗红色','暗粉红色','暗黄色','暗白色','暗灰色',\
  '蓝色','绿色','天蓝色','红色','粉红色','黄色','白色']

# print information of this application
print('#'*60)
print('This app is used for translating English word to Chineses!')
print('#'*60+'\n')

# get word from Command line
word = input("Enter a word (enter 'q' to exit): ")

# main body
while word != 'q': # 'q' to exit
 try:
 # 利用GET获取输入单词的网页信息
 r = requests.get(url='http://dict.youdao.com/w/%s/#keyfrom=dict2.top'%word)
 # 利用BeautifulSoup将获取到的文本解析成HTML
 soup = BeautifulSoup(r.text, "lxml")
 # 获取字典的标签内容
 s = soup.find(class_='trans-container')('ul')[0]('li')
 # 随机选择输出的颜色
 random.shuffle(color_list)
 # 输出字典的具体内容
 for item in s:
  if item.text:
  cprint(item.text, color_list[0])
 print('='*40+'\n')
 except Exception:
 print("Sorry, there is a error!\n")
 finally:
 word = input( "Enter a word (enter 'q' to exit): ")

利用pyinstaller模块,将上述程序打包为exe文件。比如我们刚才的Python代码的文件名为English_2_Chinese_dict.py,位于E盘下的eng_2_chn文件夹下,我们可以在CMD中先切换到E盘下eng_2_chn文件夹,再输入以下命令:

pyinstaller -F English_2_Chinese_dict.py

这样就会生成一些文件,如下图:

python爬虫之自制英汉字典

我们想要的生成的exe文件位于dist文件夹下,运行该exe文件,并测试,如下:

python爬虫之自制英汉字典

这样我们也就实现了上述新增的功能,能够更加方便地运行我们的程序。怎么样,是不是觉得Python爬虫酷酷的?不知作为新手的你,有没有一点心动呢?赶紧学起来吧。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现的阳历转阴历(农历)算法
Apr 25 Python
17个Python小技巧分享
Jan 23 Python
Python中time模块与datetime模块在使用中的不同之处
Nov 24 Python
Python实现的递归神经网络简单示例
Aug 11 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
Dec 08 Python
python之pandas用法大全
Mar 13 Python
win7下python3.6安装配置方法图文教程
Jul 31 Python
python学生管理系统学习笔记
Mar 19 Python
python实现坦克大战游戏 附详细注释
Mar 27 Python
python从zip中删除指定后缀文件(推荐)
Dec 05 Python
python实现三阶魔方还原的示例代码
Apr 28 Python
python异常中else的实例用法
Jun 15 Python
Pyqt5实现英文学习词典
Jun 24 #Python
set在python里的含义和用法
Jun 24 #Python
如何利用Anaconda配置简单的Python环境
Jun 24 #Python
python程序变成软件的实操方法
Jun 24 #Python
PyCharm安装Markdown插件的两种方法
Jun 24 #Python
python设置环境变量的原因和方法
Jun 24 #Python
详解PyCharm安装MicroPython插件的教程
Jun 24 #Python
You might like
PHP文本数据库的搜索方法
2006/10/09 PHP
基于php常用正则表达式的整理汇总
2013/06/08 PHP
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
2016/07/06 PHP
mac os快速切换多个PHP版本的方法
2017/03/07 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
基于jquery的让页面控件不可用的实现代码
2010/04/27 Javascript
详解jQuery插件开发中的extend方法
2013/11/19 Javascript
原生js仿jq判断当前浏览器是否为ie,精确到ie6~8
2014/08/30 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
Bootstrap布局之栅格系统详解
2016/06/13 Javascript
如何使用Vuex+Vue.js构建单页应用
2016/10/27 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
JavaScript数据结构之链表的实现
2017/03/19 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
javascript for循环性能测试示例
2019/08/07 Javascript
关于vue路由缓存清除在main.js中的设置
2019/11/06 Javascript
[03:08]Ti4观战指南上
2014/07/07 DOTA
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
Python中使用SAX解析xml实例
2014/11/21 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
tensorflow 获取变量&打印权值的实例讲解
2018/06/14 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
Numpy之reshape()使用详解
2019/12/26 Python
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
2013/01/23 HTML / CSS
沙特阿拉伯网上购物:Sayidaty Mall
2018/05/06 全球购物
小学语文国培感言
2014/03/04 职场文书
金融系应届毕业生求职信
2014/05/26 职场文书
公司离职证明标准样本
2014/10/05 职场文书
利用Python实现Picgo图床工具
2021/11/23 Python
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android