想知道如何使用Python 3来创建一些单词的词典(所以说我输入一个单词,我希望Python能够采用Google能够提供的定义,然后存储或显示它)
我没有做太多编码,但我知道如何管理之后的文字。我只是有点困惑使用urllib和东西。我只能在其他版本的Python上找到帮助,我无法在Python 3.3上复制。
编辑:是的,我想使用Google,因为我喜欢它定义单词和短语的方式,我打算使用你提到的定义协议icedtrees。
答案 0 :(得分:1)
修改:Google搜索似乎使用AJAX调用等来获取其定义。以下解决方案无效。
如果您在使用urllib2时遇到问题,我建议使用漂亮的Python Requests软件包,它更易于使用。
如果您绝对致力于获取Google定义而没有其他定义,我建议您使用Google搜索“定义”协议向网页发送HTTP请求。
例如:
https://www.google.com.au/search?q=define:test
然后,您将保存HTML结果,然后解析它以获取所需的定义。 Python HTML解析器的一些示例是HTMLParser模块,还有BeautifulSoup。但是,这个解析操作看起来很简单,所以一个基本的正则表达式应该绰绰有余。所有定义都存储如下:
<div style="display:inline" data-dobid="dfn"> # the order of the style and the data-dobid can change
<span>definition goes here</span>
</div>
从HTML页面获取“test”定义的正则表达式示例:
import re
definitions = re.findall(r'data-dobid="dfn".*?>.*?\<span>(.*?)</span>.*?</div>', html, re.DOTALL)
>>> len(definitions)
18
>>> definitions[0]
'a\n procedure intended to establish the quality, performance, or \nreliability of something, especially before it is taken into widespread \nuse.'
# Looks like you might need to remove the newlines
>>> definitions[5]
'the result of a medical examination or analytical procedure.'
作为旁注,还存在Google Dictionary API,它可以为您提供JSON格式的定义结果以响应请求。