Ian Lurie // Nov 17 2010
If you use the KeywordDiscovery API, and Python, my pain is your gain. It took me a few hours to get this to work. You can grab it and go. Here’s the function, written in my usual Python Pigdin. I don’t recommend using it without a passing knowledge of Python, but that’s up to you:
def kwdiscovery(username,password,phraselist): base64string = base64.encodestring('%s:%s' % (username, password))[:-1] authheader = "Basic %s" % base64string apiurl = "http://api.keyworddiscovery.com/queries.php?queries=" separator = "%0D%0A" counter = 1 for phrase in phraselist: # make sure there's no funny characters try: phrase.decode('ascii') except UnicodeDecodeError: continue phrase = phrase.replace(" ","+") phrase = phrase.replace("n","") if (counter > 1): apiurl = apiurl + separator + phrase else: apiurl = apiurl + phrase counter = counter + 1 apiurl = apiurl + "&empty=1" req = urllib2.Request(apiurl) req.add_header("Authorization", authheader) blah = urllib2.urlopen(req) # because sometimes, things just go wrong try: result = ET.parse(blah) resultlist =  lst = result.findall("r") for item in lst: this = item.attrib["q"],item.attrib["m"] resultlist.append(this) except: this = "__one of the words in this request caused an error:",apiurl resultlist = [this] return resultlist
And here’s how you’d use the function:
#!/usr/bin/python import string import sys import httplib import urllib2 from urllib2 import Request, urlopen, URLError import xml.etree.ElementTree as ET import base64 f = open('longw.txt','r') g = open('words_countedlongtail.txt','w') words = f.readlines() username = "ENTER KEYWORDDISCOVERY USERNAME HERE" password = "ENTER KEYWORDDISCOVERY PASSWORD HERE" start = 0 count = len(words) while (count > 0): count = count - 9 end = start + 9 a = words[start:end] print "sent ",a resultlist = kwdiscovery(username,password,a) for l in resultlist: q = str(l) m = str(l) line = q + "t" + m + "n" g.write(line) print "received ",line start = end f.close() g.close()
Who knows, I might even create a web interface one of these days. In my spare time.
Ian Lurie is founder and CEO of Portent Inc., an internet marketing agency that has provided internet marketing, including PPC, SEO, social and analytics services, since 1995. Read More