2014-02-09 34 views
0

想知道如何使用Python 3來創建一些詞的詞典(所以說我輸入一個詞,我希望Python採取谷歌能夠給出的定義,然後存儲或顯示它)如何執行Google搜索並獲取文本結果?

我沒有做太多的編碼,但我知道如何管理後面的單詞。我只是有點困惑,使用urllib和東西。我只能在其他版本的Python上找到這方面的幫助,我無法在Python 3.3上覆制它。

編輯:是的,我想使用Google,因爲我喜歡它定義單詞和短語的方式,並且我打算使用您提到的定義協議,icedtrees。

+0

那裏的圖書館工作python3? [pygoogle](https://code.google.com/p/pygoogle/)或[google](https://pypi.python.org/pypi/google/1.05)? –

回答

1

編輯:看來谷歌搜索使用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格式的定義結果。