资讯专栏INFORMATION COLUMN

Python爬虫之自制英汉字典

graf / 1911人阅读

摘要:笔者看到了,觉得还蛮有意思的,因此,决定自己也写一个玩玩首先我们的爬虫要能将英语单词翻译成中文,因此,我们就需要一个网站帮助我们做这件事情。

  最近在微信公众号中看到有人用Python做了一个爬虫,可以将输入的英语单词翻译成中文,或者把中文词语翻译成英语单词。笔者看到了,觉得还蛮有意思的,因此,决定自己也写一个玩玩~~
  首先我们的爬虫要能将英语单词翻译成中文,因此,我们就需要一个网站帮助我们做这件事情。于是,我们选定有道词典,网址为: http://dict.youdao.com/ 。在该网页中我们输入单词nice,就会出来这个单词的意思,如下图:

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

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+"
")
    except Exception:
        print("Sorry, there is a error!
")
    finally:
        word = input( "Enter a word (enter "q" to exit): ")

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

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

将Python代码打包成exe文件;

在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+"
")

# 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+"
")
    except Exception:
        print("Sorry, there is a error!
")
    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

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

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

  这样我们也就实现了上述新增的功能,能够更加方便地运行我们的程序。怎么样,是不是觉得Python爬虫酷酷的?不知作为新手的你,有没有一点心动呢?赶紧学起来吧,哈哈~~
  本次分享到此结束,如有任何问题,请在下面评论哦~~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41767.html

相关文章

  • Java爬虫利用Jsoup自制简单的搜索引擎

    摘要:的官方网址为,其使用手册网址为本次分享将实现的功能为利用爬取某个搜索词语暂仅限英文的百度百科的介绍部分,具体的功能介绍可以参考博客爬虫自制简单的搜索引擎。   Jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。Jsoup的官方网址为: https:...

    GHOST_349178 评论0 收藏0
  • 自制简单的诗歌搜索系统

    摘要:项目简介本文将介绍一个笔者自己的项目自制简单的诗歌搜索系统。该项目使用的模块为其中,模块和模块用来制作爬虫,爬取网上的诗歌。 项目简介   本文将介绍一个笔者自己的项目:自制简单的诗歌搜索系统。该系统主要的实现功能如下:指定一个关键词,检索出包含这个关键词的诗歌,比如关键词为白云,则检索出的诗歌可以为王维的《送别》,内容为下马饮君酒,问君何所之?君言不得意,归卧南山陲。但去莫复问,白云...

    SegmentFault 评论0 收藏0
  • 首次公开,整理12年积累的博客收藏夹,零距离展示《收藏夹吃灰》系列博客

    摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...

    Harriet666 评论0 收藏0
  • Python爬虫理论cookie验证,不回顾下历史,套路都不知道怎么来的!

    摘要:在发明之初,为了帮助服务器同步网页上的用户信息,同时保存用户操作,以此减轻服务器压力。由正在浏览的网站创建的被称为第一方。这些第三方怎么来的呢他们又有什么作用了。写在最后了解历史,有助于,我们更好的定位问题。 ...

    fuyi501 评论0 收藏0
  • Spring Boot入门(13)自制音乐平台

    摘要:经过笔者这几天的辛勤劳作其实就是苦逼地码代码,一个新的网站已经上线啦该网站是用工具写的,主要实现的功能如下根据歌曲名称和音乐平台搜索歌曲,并实现歌曲的在线播放歌曲的下载功能网页统计量功能开发历史介绍。   经过笔者这几天的辛勤劳作(其实就是苦逼地码代码),一个新的网站已经上线啦!该网站是用Spring Boot工具写的,主要实现的功能如下: 根据歌曲名称和音乐平台搜索歌曲,并实现歌曲...

    Mr_zhang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<