获取正式输入英语词典的单词的日期

时间:2014-04-28 11:31:54

标签: python linguistics

我正在尝试跟踪不同单词进入英语词典的日期(牛津,梅里亚姆 - 韦伯斯特等)

我非常希望找到一个API,这样如果我发送自拍'我会回来' 2013'作为回复的一部分,但我认为这些数据并不常见或甚至不易访问。

我看过:

但似乎都没有提供对此数据的访问权。

我正在使用python,并且还查看了pypi.python.org,但无法找到可以解决此问题的任何模块。

看起来我可能只需要手工收集我正在寻找的数据,但在此之前我想检查是否有人知道更好的方法来解决这个问题。

1 个答案:

答案 0 :(得分:0)

这是检索单词的基本脚本。如果一个单词有多个定义,则只选择一个。

import re
import urllib2

# Import Custom libraries
from BeautifulSoup import BeautifulSoup

def render_oxford_uri(term):
    '''
    Render the appropriate Oxford request uri
    '''
    base_url = "http://www.oxforddictionaries.com/definition/english/"
    url = base_url + ("%s?q=%s" % (re.sub("\s+", "-", term), re.sub("\s+", "+", term)))
    return url

def get_words(*args):
    '''
    Oxford dictionary word scraper
    '''
    ret_list = []
    for term in args:
        request_uri = render_oxford_uri(term)
        request = urllib2.Request(request_uri, None, {})

        try:
            response = urllib2.urlopen(request)
            the_page = response.read()
        except Exception:
            the_page = ""

        if the_page:
            pool   = BeautifulSoup(the_page)
            result = pool.find("div", attrs={"class" : "entryPageContent"})

            if result:
                term        = result.find("h2"  , attrs={"class" : "pageTitle"})
                speech_part = result.find("span", attrs={"class" : "partOfSpeech"})
                definition  = result.find("span", attrs={"class" : "definition"})
                date        = result.find("span", attrs={"class" : "date"})

                cur_dict = \
                {
                    "Term"           : term.text,
                    "Part of Speech" : speech_part.text,
                    "Definition"     : definition.text,
                    "Date"           : date.text,
                }
                ret_list += [cur_dict]

    return ret_list

if __name__ == "__main__":
    print get_words("selfie", "vapid")