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 相关文章推荐
使用PDB简单调试Python程序简明指南
Apr 25 Python
Python实现定时执行任务的三种方式简单示例
Mar 30 Python
Python3中列表list合并的四种方法
Apr 19 Python
python绘制地震散点图
Jun 18 Python
通过python实现弹窗广告拦截过程详解
Jul 10 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
Jul 25 Python
python列表推导式操作解析
Nov 26 Python
Python3 读取Word文件方式
Feb 13 Python
在Mac中PyCharm配置python Anaconda环境过程图解
Mar 11 Python
Python自动化办公Excel模块openpyxl原理及用法解析
Nov 05 Python
详解如何用Python实现感知器算法
Jun 18 Python
全网非常详细的pytest配置文件
Jul 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面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
2019/10/15 PHP
javascript 模式设计之工厂模式学习心得
2010/04/27 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
通过Jquery遍历Json的两种数据结构的实现代码
2011/01/19 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
DOM基础教程之事件对象
2015/01/20 Javascript
javascript中使用new与不使用实例化对象的区别
2015/06/22 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
2016/10/05 Javascript
原生js实现倒计时--2018
2017/02/21 Javascript
vue实现点击当前标签高亮效果【推荐】
2018/06/22 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
2018/10/31 Javascript
性能优化篇之Webpack构建速度优化的建议
2019/04/03 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
JS前后端实现身份证号验证代码解析
2020/07/23 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
python实现维吉尼亚加密法
2019/03/20 Python
PyQt5 QTableView设置某一列不可编辑的方法
2019/06/25 Python
python对Excel的读取的示例代码
2020/02/14 Python
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
HTML5新增的表单元素和属性实例解析
2014/07/07 HTML / CSS
Mountain Hardwear官网:攀岩服装和户外装备
2019/09/26 全球购物
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
MediaMarkt比利时:欧洲最大电器连锁店
2020/12/21 全球购物
2014婚礼司仪主持词
2014/03/14 职场文书
教师学习八项规定六项禁令思想汇报
2014/09/27 职场文书
公司授权委托书
2014/10/17 职场文书
入队仪式主持词
2015/07/04 职场文书
2015毕业设计工作总结
2015/07/24 职场文书
小学体育组工作总结
2015/08/13 职场文书
幼儿体育课教学反思
2016/02/16 职场文书
MySQL 服务和数据库管理
2021/11/11 MySQL