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 类与元类的深度挖掘 II【经验】
May 06 Python
Python脚本实时处理log文件的方法
Nov 21 Python
python3监控CentOS磁盘空间脚本
Jun 21 Python
python Flask 装饰器顺序问题解决
Aug 08 Python
python的依赖管理的实现
May 14 Python
python实现键盘输入的实操方法
Jul 16 Python
Python从文件中读取指定的行以及在文件指定位置写入
Sep 06 Python
python 五子棋如何获得鼠标点击坐标
Nov 04 Python
Python高阶函数、常用内置函数用法实例分析
Dec 26 Python
Matplotlib绘制雷达图和三维图的示例代码
Jan 07 Python
浅谈Django前端后端值传递问题
Jul 15 Python
Python远程方法调用实现过程解析
Jul 28 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
织梦模板标记简介
2007/03/11 PHP
抓取YAHOO股票报价的类
2009/05/15 PHP
浅谈php提交form表单
2015/07/01 PHP
orm获取关联表里的属性值
2016/04/17 PHP
学习ExtJS form布局
2009/10/08 Javascript
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
asp.net中System.Timers.Timer的使用方法
2013/03/20 Javascript
JS控制阿拉伯数字转为中文大写示例代码
2013/09/04 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
优化Node.js Web应用运行速度的10个技巧
2014/09/03 Javascript
JavaScript插件化开发教程 (四)
2015/01/27 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
jQuery判断数组是否包含了指定的元素
2015/03/10 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
2015/05/06 Javascript
jQuery密码强度验证控件使用详解
2017/01/05 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
jQuery图片拖动组件Dropzone用法示例
2017/01/17 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
[01:21]2018DOTA2亚洲邀请赛4.5采访 打DOTA2也能有女朋友?
2018/04/06 DOTA
python 实现红包随机生成算法的简单实例
2017/01/04 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
python中pygame安装过程(超级详细)
2019/08/04 Python
python实现知乎高颜值图片爬取
2019/08/12 Python
Django错误:TypeError at / 'bool' object is not callable解决
2019/08/16 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
日本热销NO.1胶原蛋白冻:Aishitoto爱希特多
2019/06/20 全球购物
C#实现启动一个进程
2016/10/01 面试题
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
财务人员个人求职信范文
2013/12/04 职场文书
党员剖析材料范文
2014/09/30 职场文书
安娜卡列尼娜观后感
2015/06/11 职场文书
从零开始在Centos7上部署SpringBoot项目
2022/04/07 Servers