我已经写了一个非常简单的代码来获得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