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实现的使用telnet登陆聊天室实例
Jun 17 Python
Python脚本暴力破解栅栏密码
Oct 19 Python
Python3 实现随机生成一组不重复数并按行写入文件
Apr 09 Python
PyQt5每天必学之带有标签的复选框
Apr 19 Python
Python 数据处理库 pandas进阶教程
Apr 21 Python
TensorFlow实现简单卷积神经网络
May 24 Python
python pandas修改列属性的方法详解
Jun 09 Python
python实现整数的二进制循环移位
Mar 08 Python
一个可以套路别人的python小程序实例代码
Apr 09 Python
pygame实现俄罗斯方块游戏(基础篇3)
Oct 29 Python
详解python UDP 编程
Aug 24 Python
虚拟环境及venv和virtualenv的区别说明
Feb 05 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用mysql数据库存储session的代码
2010/03/05 PHP
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
2014/02/24 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
2014/11/07 PHP
PHP实现抓取HTTPS内容
2014/12/01 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
php生成网页桌面快捷方式
2017/05/05 PHP
PHP常见字符串操作函数与用法总结
2019/03/04 PHP
Laravel 模型关联基础教程详解
2019/09/17 PHP
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
2013/05/17 Javascript
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
2014/05/11 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
Bootstrap-table自定义可编辑每页显示记录数
2018/09/07 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
2020/05/06 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
Python max内置函数详细介绍
2016/11/17 Python
tensorflow获取变量维度信息
2018/03/10 Python
Python 处理图片像素点的实例
2019/01/08 Python
用python做游戏的细节详解
2019/06/25 Python
logging level级别介绍
2020/02/21 Python
Python日志处理模块logging用法解析
2020/05/19 Python
Python如何截图保存的三种方法(小结)
2020/09/01 Python
python实现测试工具(一)——命令行发送get请求
2020/10/19 Python
用python爬虫批量下载pdf的实现
2020/12/01 Python
用CSS3绘制三角形的简单方法
2015/07/17 HTML / CSS
eBay意大利购物网站:eBay.it
2019/09/04 全球购物
Elizabeth Gage官网:英国最好的珠宝设计之一
2020/09/26 全球购物
社区包粽子活动方案
2014/01/21 职场文书
机械工程师岗位职责
2014/06/16 职场文书
六一晚会主持词开场白
2015/05/28 职场文书
比赛主持人开场白
2015/05/29 职场文书
OpenCV-Python实现轮廓拟合
2021/06/08 Python