Thursday, March 10, 2011

Python code to grab KeywordDiscovery API data


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[0]) 		m = str(l[1]) 		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.

Related and recent

Source: http://feedproxy.google.com/~r/conversationmarketing/MRJI/~3/vvgyFv9xi_4/python_code_to_grab_keyworddis.htm

search engine marketing internet marketing search engine search engine marketing seo shelly long

No comments:

Post a Comment