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 文件重命名工具代码
Jul 26 Python
剖析Python的Tornado框架中session支持的实现代码
Aug 21 Python
python实现将内容分行输出
Nov 05 Python
Python Socket传输文件示例
Jan 16 Python
Python计时相关操作详解【time,datetime】
May 26 Python
python判断一个集合是否为另一个集合的子集方法
May 04 Python
python bmp转换为jpg 并删除原图的方法
Oct 25 Python
python爬虫 Pyppeteer使用方法解析
Sep 28 Python
使用python 将图片复制到系统剪贴中
Dec 13 Python
python如何获取apk的packagename和activity
Jan 10 Python
python手机号前7位归属地爬虫代码实例
Mar 31 Python
Python实现生活常识解答机器人
Jun 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
基于mysql的bbs设计(二)
2006/10/09 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
2013/05/03 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
PHP 命名空间和自动加载原理与用法实例分析
2020/04/29 PHP
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
密码强度检测效果实现原理与代码
2013/01/04 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
基于OO的动画附加插件,可以实现弹跳、渐隐等动画效果 分享
2013/06/24 Javascript
IE下JS读取xml文件示例代码
2013/08/05 Javascript
jQuery实现跟随鼠标运动图层效果的方法
2015/02/02 Javascript
jquery不常用方法汇总
2015/07/26 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
2016/03/01 Javascript
node.js 动态执行脚本
2016/06/02 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
利用node.js本地搭建HTTP服务器
2017/04/19 Javascript
CSS3+JavaScript实现翻页幻灯片效果
2017/06/28 Javascript
深入浅出es6模板字符串
2017/08/26 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
2017/11/14 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
一个Vue页面的内存泄露分析详解
2018/06/25 Javascript
微信小程序实现登录遮罩效果
2018/11/01 Javascript
[03:09]显微镜下的DOTA2第一期——带你走进华丽的DOTA2世界
2014/06/20 DOTA
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
Python图像处理之识别图像中的文字(实例讲解)
2018/05/10 Python
python读取大文件越来越慢的原因与解决
2019/08/08 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
美国百货齐全的精品网站,提供美式风格的产品:Overstock.com
2016/07/22 全球购物
俄罗斯游戏商店:Buka
2020/03/01 全球购物
艺术设计专业个人求职信
2013/09/21 职场文书
网络工程与软件技术毕业生自荐信
2013/09/24 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
办公室岗位职责范本
2015/04/11 职场文书
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python
使用Ajax实现进度条的绘制
2022/04/07 Javascript