zoukankan      html  css  js  c++  java
  • WordSearch英语单词词义搜索工具

    英语单词词义搜索小工具:

    有5个功能:

    1.Definition(单词定义-英英释义)
    2.WordFamily(形近词)
    3.Synonym(同义词)
    4.Antonym(反义词)
    5.ContextualSentence(例句)

    将所需要查询的单词分行填写在'Word.txt'文件中后.

    运行该.py文件, 选择需要生成相关内容即可

    import requests
    import time
    from bs4 import BeautifulSoup
    import re
    import sys
    # 修改递深限制
    sys.setrecursionlimit(100000)
    
    # 单词文件所在位置
    # 单词间回车分隔,例:
    # achieve
    # acquisition
    # administration
    # affect
    # appropriate
    # aspects
    # assistance
    # categories
    # chapter
    # commission
    WORDS_PATH = './Word.txt'
    # 网页头
    URL = 'http://dict.cn/'
    # 单词列表
    WORDS = []
    # 内容列表
    CONTENT = []
    # 输入时候注释
    # SELECT_NUM = 4
    SELECT_NUM_DICT = {
        1: 'Definition',
        2: 'WordFamily',
        3: 'Synonym',
        4: 'Antonym',
        5: 'ContextualSentence'
    }
    # 正则表达式
    STR_MATCH_DICT = {
        1: r'.?([a-zA-z].*);',
        2: r'/([a-zA-Z]+)"',
        3: r'/([a-zA-Z]+)"',
        4: r'/([a-zA-Z]+)"',
        5: r'<li>(.*?)<br/>',
    }
    # 搜索规则
    QUERY_RULE_DICT = {
        1: '.section.def .layout.en ol[slider="3"] li',
        2: '.section.rel .layout.nwd a',
        3: '.section.rel .layout.nfo ul[slider="12"] li a',
        4: '.section.rel .layout.nfo ul[slider="12"] li a',
        5: '.section.sent .layout.sort ol[slider="2"] li'
    }
    
    
    # 5: '.section.def .layout.en ol[slider="3"] li'
    
    def run(str_match, query_rule):
        '''遍历获得每个单词的相应属性'''
    
        # 获取网站元素
        # 创建链接
        rs = requests.Session()
    
        # 遍历获得每个单词的元素
        for word in WORDS:
            word_url = URL + word
    
            res = rs.get(word_url)
    
            # 获取链接源代码
            soup = BeautifulSoup(res.text, 'lxml')
    
            # 查询内容
            element = soup.select(query_rule)
            element = str(element)
            element = re.findall(str_match, element)
    
            # element = str(element)
            if element:
                # 句子选最短
                if SELECT_NUM == 5:
                    element = min(element, key=len)
                # 近义词选最前
                elif SELECT_NUM == 1 or SELECT_NUM == 2 or SELECT_NUM == 3:
                    element = element[0]
                # 反义词选最后
                elif SELECT_NUM == 4:
                    element = element[-1]
    
            else:
                element = ''
    
            # 添加任意字符串, 以区分单词是否找到相关释义,如不需要字符串为空''即可
            sign = 'SSS:'
            content = sign + element
            CONTENT.append(content)
    
        
    
    
    def show():
        '''显示选择菜单'''
        print('请选择需要产生的单词内容:
    '
              '
    1.Definition(单词定义)
    '
              '
    2.WordFamily(形近词)
    '
              '
    3.Synonym(同义词)
    '
              '
    4.Antonym(反义词)
    '
              '
    5.ContextualSentence(句子)
    '
              '')
        select_num = int(input('请输入你的选择:'))
        return select_num
    
    
    def write():
        '''写入保存的内容'''
        file = SELECT_NUM_DICT[SELECT_NUM]
    
        date = time.strftime('%Y%m%d%H')
    
        file_name = file + date + '.txt'
        print('写入')
        jump = str('
    ')
        # 写入
        with open(file_name, 'w+') as f:
            for i in CONTENT:
                f.writelines(i)
                f.write(jump)
    
    
    def mean():
        '''获取单词'''
        # 获取单词
        with open(WORDS_PATH) as f:
            for word in f.readlines():
                word = word.replace('
    ', '')
                WORDS.append(word)
    
        if len(WORDS) < 1:
            print('无法获取单词')
            return
    
        # 显示选择菜单
        select_num = show()
        # 修改全局变量
        global SELECT_NUM
    
        SELECT_NUM = select_num
        #
        # # 默认选择5
        # if SELECT_NUM:
    
        # 对应相关正则表达式
        str_match = STR_MATCH_DICT[SELECT_NUM]
        query_rule = QUERY_RULE_DICT[SELECT_NUM]
    
        run(str_match, query_rule)
        # 写入内容
        write()
        print('任务结束')
    
    
    if __name__ == '__main__':
        mean()    
    

      

    ###

    本工具使用的是海词.相对应的元素获取路径以及内容正则表达式也针对于该网站.

    如需更改, 请重写相关内容.

    Github下载链接:

    https://github.com/Roshenn/WordDictionarySearch

  • 相关阅读:
    创建或者连接管道+++检查管道空间是否够写入本消息++++删除管道
    从instr中截取第一个delimiter之前的内容放到outstr中,返回第一个delimiter之后的位置
    把数字按网络顺序或主机顺序存放到字符串中++++把字符串按网络顺序转换成数字++++把字符串按主机顺序转换成数字
    压缩空格的函数以及BCD码与ASCII相互转换函数
    判断文件是否存在
    把指定长度字符串转换成数字
    找到特定串在源字符串中的位置
    FTP命令详解
    docker 学习路线
    云原生技术的了解
  • 原文地址:https://www.cnblogs.com/jrri/p/11693981.html
Copyright © 2011-2022 走看看