Я написал довольно простой код, чтобы получить первый результат для любого термина на urbandictionary.com. Я начал с того, что написал простую вещь, чтобы посмотреть, как их код отформатирован.
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
По какой-то причине синтаксический анализ, кажется, не работает и неизменно сталкивается с ошибкой каждый раз. Это особенно сбивает с толку, поскольку сайт, по-видимому, использует в основном тот же формат, что и другие сайты, с которых я успешно извлек определенные данные. Если бы кто-нибудь мог помочь мне выяснить, о чем я здесь пишу, это было бы очень признательно.