想知道如何使用Python 3來創建一些詞的詞典(所以說我輸入一個詞,我希望Python採取谷歌能夠給出的定義,然後存儲或顯示它)如何執行Google搜索並獲取文本結果?
我沒有做太多的編碼,但我知道如何管理後面的單詞。我只是有點困惑,使用urllib和東西。我只能在其他版本的Python上找到這方面的幫助,我無法在Python 3.3上覆制它。
編輯:是的,我想使用Google,因爲我喜歡它定義單詞和短語的方式,並且我打算使用您提到的定義協議,icedtrees。
想知道如何使用Python 3來創建一些詞的詞典(所以說我輸入一個詞,我希望Python採取谷歌能夠給出的定義,然後存儲或顯示它)如何執行Google搜索並獲取文本結果?
我沒有做太多的編碼,但我知道如何管理後面的單詞。我只是有點困惑,使用urllib和東西。我只能在其他版本的Python上找到這方面的幫助,我無法在Python 3.3上覆制它。
編輯:是的,我想使用Google,因爲我喜歡它定義單詞和短語的方式,並且我打算使用您提到的定義協議,icedtrees。
編輯:看來谷歌搜索使用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頁面抓取「測試」的定義的一個例子:
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格式的定義結果。
那裏的圖書館工作python3? [pygoogle](https://code.google.com/p/pygoogle/)或[google](https://pypi.python.org/pypi/google/1.05)? –