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'\/(\b[a-zA-Z]+\b)\"',
    3: r'\/(\b[a-zA-Z]+\b)\"',
    4: r'\/(\b[a-zA-Z]+\b)\"',
    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('请选择需要产生的单词内容:\n'
          '\n1.Definition(单词定义)\n'
          '\n2.WordFamily(形近词)\n'
          '\n3.Synonym(同义词)\n'
          '\n4.Antonym(反义词)\n'
          '\n5.ContextualSentence(句子)\n'
          '')
    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('\r')
    # 写入
    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('\n', '')
            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

posted @ 2019-10-17 18:43  Jrri  阅读(1064)  评论(0编辑  收藏  举报