我已經寫了一個非常簡單的代碼來獲得urbandictionary.com上任何詞條的第一個結果。我從寫一個簡單的東西開始,看看他們的代碼是如何格式化的。檢索python中第一個詞條的城市詞典結果
def parseudtest(searchurl):
url = 'http://www.urbandictionary.com/define.php?term=%s' %searchurl
url_info = urllib.urlopen(url)
for lines in url_info:
print lines
對於測試,我搜索'cats',並且使用了作爲可變searchurl
。我收到的輸出當然是一個巨大的頁面,但這裏是我關心的部分約:
<meta content='He set us up the bomb. Also took all our base.' name='Description' />
<meta content='He set us up the bomb. Also took all our base.' property='og:description' />
<meta content='cats' property='og:title' />
<meta content="http://static3.urbandictionary.com/rel-1e0b481/images/og_image.png" property="og:image" />
<meta content='Urban Dictionary' property='og:site_name' />
正如你所看到的,在第一時間元素「中繼內容」出現在網站上,這是搜索詞的第一個定義。因此,我編寫了以下代碼以檢索它:
def parseud(searchurl):
url = 'http://www.urbandictionary.com/define.php?term=%s' %searchurl
url_info = urllib.urlopen(url)
if (url_info):
xmldoc = minidom.parse(url_info)
if (xmldoc):
definition = xmldoc.getElementsByTagName('meta content')[0].firstChild.data
print definition
由於某些原因,解析似乎無法正常工作,並且每次都會遇到錯誤。這是特別令人困惑,因爲該網站似乎使用基本上相同的格式,我成功地從其他網站檢索到特定的數據。如果有人能幫我弄清楚我在這裏搞砸了什麼,那將不勝感激。
你的答案是絕對正確的,但即使我用它不會工作正確的標籤名。問題在於該頁面無效的XML,所以我下載並實施了美麗的湯,做我現在想要的。 – Jordan 2012-02-13 11:45:54
@Jordan:使用BeautifulSoup是一個不錯的選擇:) – 2012-02-13 11:53:58