Rev 13845 | Rev 13915 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
import pymongofrom dtr.utils.utils import to_java_datefrom datetime import datetimefrom operator import itemgetterfrom dtr.utils import FlipkartScrapercon = Nonenow = datetime.now()print to_java_date(now)scraperFk = FlipkartScraper.FlipkartScraper()def get_mongo_connection(host='localhost', port=27017):global conif con is None:print "Establishing connection %s host and port %d" %(host,port)try:con = pymongo.MongoClient(host, port)except Exception, e:print ereturn Nonereturn condef scrapeFlipkart():flipkartBestSellers = list(get_mongo_connection().Catalog.MasterData.find({'rank':{'$gt':0},'source_id':2}))for data in flipkartBestSellers:inStock = 0retryCount = 0print str(data['identifier'])if data['identifier'] is None or len(data['identifier'].strip())==0:print "continue"continueurl = "http://www.flipkart.com/ps/%s"%(data['identifier'])while(retryCount < 3):try:vendorsData = scraperFk.read(url)fetched = Truebreakexcept Exception as e:print "***Retry count ",retryCountretryCount+=1if retryCount == 3:fetched = Falseprint eif not fetched:print "Unable to fetch data after multiple tries.Continue for ",data['identifier']continuesortedVendorsData = []sortedVendorsData = sorted(vendorsData, key=itemgetter('sellingPrice'))print "data",sortedVendorsDatalowestSp, iterator = (0,)*2for vData in sortedVendorsData:if iterator == 0:lowestSp = vData['sellingPrice']breakif lowestSp > 0:inStock = 1print lowestSpprint inStockif lowestSp > 0:get_mongo_connection().Catalog.MasterData.update({'identifier':data['identifier']}, {'$set' : {'available_price':lowestSp,'updatedOn':to_java_date(now),'in_stock':inStock}}, multi=True)else:get_mongo_connection().Catalog.MasterData.update({'identifier':data['identifier']}, {'$set' : {'updatedOn':to_java_date(now),'in_stock':inStock}}, multi=True)print "+++++++++++++++++++++++++++"def main():scrapeFlipkart()if __name__=='__main__':main()