Fwd: student project (market reseach)

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Fwd: student project (market reseach)

kirby urner-4

Greetings to edu-sig friends, HNY!
Kirby




---------- Forwarded message ----------
From: kirby urner <[hidden email]>
Date: Wed, Dec 30, 2009 at 5:49 PM
Subject: student project (market reseach)



"""

Slinging code from this resource:
http://uswaretech.com/blog/2009/06/bing-python-api/

More background in blog:
http://mybizmo.blogspot.com/2009/12/back-stage.html

Also edu-sig:
open source buzzbot project proposal
http://mail.python.org/pipermail/edu-sig/2009-September/009520.html

"""

import urllib2
import urllib
import simplejson
import logging

APP_ID = "your_app_id_here"

class BingException(Exception):
    pass

class Bing(object):
    def __init__(self, app_id, loglevel=logging.INFO):
        self.app_id = app_id
        self.log_filename = 'log.log'
        self.end_point = '<a href="http://api.search.live.net/json.aspx?Appid=%s&amp;%27%app_id" target="_blank">http://api.search.live.net/json.aspx?Appid=%s&'%app_id
        logging.basicConfig(level=loglevel,
                          format='%(asctime)s %(name)-6s %(levelname)-8s %(message)s',
                          filename=self.log_filename)
       
       
    def talk_to_bing(self, query, sources, extra_args={}):
        logging.info('Query:%s'%query)
        logging.info('Sources:%s'%sources)
        logging.info('Other Args:%s'%extra_args)
       
        payload={}
        payload['Appid'] = self.app_id
        payload['query'] = query
        payload['sources'] = sources
        payload.update(extra_args)
        query_string = urllib.urlencode(payload)
        final_url = self.end_point + query_string
        logging.info('final_url:%s'%final_url)
        response = urllib.urlopen(final_url)
        data = simplejson.load(response)
        if 'Errors' in data['SearchResponse']:
            logging.info('Error')
            logging.info('data:%s'%data)
            data = data['SearchResponse']
            errors_list = [el['Message'] for el in data['Errors']]
            error_text = ','.join(errors_list)
            raise BingException(error_text)
        logging.info('data:%s'%data)
        return data
   
    def do_web_search(self, query, extra_args={}):
        return self.talk_to_bing(query, sources='web', extra_args=extra_args)
   
    def do_image_search(self, query, extra_args={}):
        return self.talk_to_bing(query, sources='image', extra_args=extra_args)
   
    def do_news_search(self, query, extra_args={}):
        return self.talk_to_bing(query, sources='news', extra_args=extra_args)
   
    def do_spell_search(self, query, extra_args={}):
        return self.talk_to_bing(query, sources='spell', extra_args=extra_args)
   
    def do_related_search(self, query, extra_args={}):
        return self.talk_to_bing(query, sources='relatedsearch', extra_args=extra_args)
   
    def do_phonebook_search(self, query, extra_args={}):
        return self.talk_to_bing(query, sources='Phonebook', extra_args=extra_args)
   
    def do_answers_search(self, query, extra_args={}):
        return self.talk_to_bing(query, sources='InstantAnswer', extra_args=extra_args)
       
def testmulti( n = 100 ):
    theurls = []
    hits = -1
    bing = Bing(APP_ID)  # your APP_ID
    while hits < n:
        try:
            results = bing.talk_to_bing("Flextegrity", sources = "web", extra_args={'web.offset':hits+1})
        except BingException:
            print BingException
            break
       
        hits += len(results['SearchResponse']['Web']['Results'])

        for result in results['SearchResponse']['Web']['Results']:
            theurl = result['Url']
            theurls.append(theurl)
           
    return theurls

def onepass():
    return testmulti(n = 1)

def simplecheck():
    bing = Bing(APP_ID)  # your APP_ID   
    try:
        results = bing.talk_to_bing("Flextegrity", sources = "web")
    except BingException:
        print BingException
    return results

def tests():
    #print simplecheck()
    # print onepass()
    print testmulti(50)
   
if __name__ == "__main__":
   tests()
  


--
>>> from mars import math
http://www.wikieducator.org/Digital_Math




--
>>> from mars import math
http://www.wikieducator.org/Digital_Math


_______________________________________________
Edu-sig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edu-sig