""" checkrank.py:
Script to fetch rank of a domain in Yahoo's
search results for given search query keywords.
Uses Yahoo API with my APPID 'NewsInImages' which
I registered for a (now vaporware) idea. I encourage
you to get your own APPID if you plan to use this script
more than twice :)
http://developer.yahoo.net/search/index.html
Usage: "./checkrank.py somedomain.com some query terms"
Requires: xmltramp.py from http://www.aaronsw.com/2002/xmltramp/
Author : Deepak Sarda
firstname.lastname@gmail.com
"""
__author__ = 'Deepak Sarda'
__version__ = '1.0'
__copyright__ = '(c) 2005 Deepak Sarda'
__license__ = 'Public Domain'
__url__ = 'http://www.antrix.net/'
import urllib, sys
import xmltramp
def getRank(DOMAIN, QUERY, max_results = 200, per_query = 20):
APPID = 'NewsInImages'
query_base_url = 'http://api.search.yahoo.com/WebSearchService/V1/webSearch?%s'
start_position = 1
while (start_position + per_query - 1) < max_results:
params = urllib.urlencode({'appid': APPID, 'query': QUERY, 'results': per_query, 'start': start_position})
xmlDataObj = urllib.urlopen(query_base_url % params)
Results = xmltramp.seed(xmlDataObj)
xmlDataObj.close()
max_results = min(max_results, int(Results('totalResultsAvailable')))
start_position = int(Results('firstResultPosition')) + int(Results('totalResultsReturned'))
current_position = int(Results('firstResultPosition'))
for result in Results:
if str(result.Url).find(DOMAIN) != -1:
print "Rank of %s is %d for query term: %s" % (DOMAIN, current_position, QUERY)
print "Title:", result.Title
print "URL:", result.Url
return result
current_position += 1
print "%s not found in the first %d results" % (DOMAIN, max_results)
if __name__ == '__main__':
if len(sys.argv) < 3:
print "Usage: %s somedomain.com some query terms" % (sys.argv[0])
raise SystemExit
domain = sys.argv[1]
query = " ".join(sys.argv[2:])
getRank(domain, query)